【发布时间】:2021-10-22 10:47:49
【问题描述】:
在我的 bash 脚本中,我将为我的环境变量加载两个文件,看起来像这样:
# file1 is default
OR=/User/onns
DESKTOP_DIR=${OR}/Desktop
# file2 is different for each pc
OR=/User/pc1
# maybe /User/pc2 in another pc
$ source file1
$ source file2
$ echo $OR
/User/pc1
$ echo $DESKTOP_DIR
/User/onns/Desktop
我的问题是有没有办法动态重新加载变量,所以我不需要定义DESKTOP_DIR 两次,只需替换OR,Tkx。
【问题讨论】:
-
. file1将在当前 shell 中设置OR和DESKTOP_DIR。 bash 的.命令类似于 csh 的source命令。 -
@JeffHolt 我知道,但这两个命令和我知道的一样,这不是我想问的????
-
没有。除了某些特殊的内置变量外,所有变量值都是在存储时计算的,而不是在加载时计算的。
-
如果我明白你在问什么,不要在
file1或file2中声明DESKTOP_DIR=${OR}/Desktop,(实际上根本不需要file1),而只能在源代码file2之后的脚本,例如. file2; DESKTOP_DIR=${OR}/Desktop; echo $DESKTOP_DIR。然后,您将拥有适合每台 PC 的DESKTOP_DIR。 (注意.是source的同义词)还要注意,赋值应该是DESKTOP_DIR="$OR/Desktop"(双引号,当下一个字符是'/'时,不需要用${...}保护。保护没有伤害,但应该使用双引号) -
@DavidC.Rankin 但是如果我有很多变量怎么办?我使用 file1 和 file2 因为我有多个变量用于多个 bash 脚本,我不能在每个脚本中声明它们,谢谢你的回复顺便说一句。
标签: bash environment-variables