在.bashrc中设置环境variables的最佳方法是什么?

.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 $TESTVARecho $MYTESTVAR将显示每个variables的内容。 现在在同一个shell里面,从你的.bashrc文件中删除这两行,然后运行bash来启动一个子shell。

运行echo $TESTVAR将会有一个空的输出,但运行echo $MYTESTVAR将显示“with export”