在中设置变量时.bashrc
,我应该使用它吗?
export VAR=value
还是足够了?
VAR=value
到底有什么区别(如果有的话)?
在中设置变量时.bashrc
,我应该使用它吗?
export VAR=value
还是足够了?
VAR=value
到底有什么区别(如果有的话)?
Answers:
export VAR=value
在做
VAR=value
仅在脚本持续时间内设置变量(.bashrc
在这种情况下)。脚本的子进程(如果有的话)将没有定义VAR,并且一旦脚本退出VAR
就消失了。
export VAR=value
显式添加VAR
到传递给子进程的变量列表中。要尝试吗?打开壳,做
PS1="foo > "
bash --norc
新的外壳程序将获得默认提示。如果相反,你做类似的事情
export PS1="foo > "
bash --norc
新的shell会得到您刚设置的提示。
更新:正如Ian Kelling所述,以下设置的变量会在.bashrc
source的shell 中保留.bashrc
。更一般而言,只要外壳程序(使用source scriptname
命令)从脚本中获取脚本,脚本中设置的变量就会在外壳程序的生命周期内持续存在。
PS1
是要导出为环境变量的变量的不良示例。它仅对作为shell的子进程有意义,并且对不同的shell(例如bash和dash)的解释也不同。最佳做法是在中将其简单地设置为常规shell变量.bashrc
。环境变量的更好的例子包括HOME
,PATH
,EDITOR
等
两者似乎都可以正常工作,但是使用export可以确保该变量可用于子shell和其他程序。要对此进行测试,请尝试此。
将这两行添加到您的.bashrc文件中
TESTVAR="no export"
export MYTESTVAR="with export"
然后打开一个新的外壳。
运行echo $TESTVAR
并echo $MYTESTVAR
显示每个变量的内容。现在,在同一外壳程序中,从您的.bashrc文件中删除这两行,然后运行bash
以启动子外壳程序。
运行echo $TESTVAR
中将有一个空的输出,但运行echo $MYTESTVAR
中将显示“ with export”