最好的办法

最好的办法

在设置变量时.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”

相关内容