在设置变量时.bashrc
,我应该使用这个吗?
export VAR=value
或者说这就足够了吗?
VAR=value
到底有什么区别(如果有的话)?
答案1
最好的办法
export VAR=value
区别
正在做
VAR=value
仅在脚本运行期间设置变量(.bashrc
在本例中)。脚本的子进程(如果有)不会定义 VAR,并且一旦脚本退出,VAR 就会VAR
消失。
export VAR=value
明确添加VAR
到传递给子进程的变量列表中。想试试吗?打开 shell,执行
PS1="foo > "
bash --norc
新的 shell 会获得默认提示符。如果你执行类似下面的操作
export PS1="foo > "
bash --norc
新的 shell 将获得您刚刚设置的提示符。
更新:正如 Ian Kelling 在下面指出的, 中设置的变量.bashrc
在提供 的 shell 中持续存在.bashrc
。更一般地,每当 shell 提供脚本(使用命令source scriptname
)时,脚本中设置的变量都会在 shell 的整个生命周期内持续存在。
答案2
这两种方法似乎都很好用,但使用 export 将确保变量可供子 shell 和其他程序使用。要测试这一点,请尝试以下方法。
将这两行添加到你的 .bashrc 文件中
TESTVAR="no export"
export MYTESTVAR="with export"
然后打开一个新 shell。
运行echo $TESTVAR
并将echo $MYTESTVAR
显示每个变量的内容。现在在同一个 shell 中,从 .bashrc 文件中删除这两行并运行bash
以启动子 shell。
运行echo $TESTVAR
会有一个空的输出,但是运行echo $MYTESTVAR
会显示“with export”