在.bashrc设置variables时,我应该使用这个吗?
export VAR=value
或者这会足够吗?
VAR=value
究竟有什么区别(如果有的话)?
export VAR=value
干
VAR=value
只在脚本的持续时间(在这种情况下为.bashrc )设置variables。 脚本的subprocess(如果有的话)将不会定义VAR,并且一旦脚本退出, VAR就消失了。
export VAR=value
显式地将VAR添加到传递给subprocess的variables列表中。 想尝试一下吗? 打开一个shell,做
PS1="foo > " bash --norc
新的shell获取默认提示符。 如果你做了类似的事情
export PS1="foo > " bash --norc
新的shell会得到你刚刚设置的提示符。
更新:正如Ian Kelling所指出的,在.bashrc中设置的variables在源自.bashrc的shell中仍然存在。 更一般地说,无论何时shell使用脚本(使用source scriptname命令) source scriptname ,脚本中设置的variables在shell的生命周期中都会持续存在。
两者似乎工作得很好,但使用导出将确保该variables可用于subhells和其他程序。 要testing这个试试这个。
将这两行添加到.bashrc文件中
TESTVAR="no export" export MYTESTVAR="with export"
然后打开一个新的shell。
运行echo $TESTVAR和echo $MYTESTVAR将显示每个variables的内容。 现在在同一个shell里面,从你的.bashrc文件中删除这两行,然后运行bash来启动一个子shell。
运行echo $TESTVAR将会有一个空的输出,但运行echo $MYTESTVAR将显示“with export”