Flávio Amieiro Asked: 2009-05-01 04:37:22 +0800 CST2009-05-01 04:37:22 +0800 CST 2009-05-01 04:37:22 +0800 CST 在 .bashrc 中设置环境变量的最佳方法是什么? 772 在 中设置变量时.bashrc,我应该使用它吗? export VAR=value 或者这就足够了? VAR=value 到底有什么区别(如果有的话)? linux bash environment-variables shell 2 个回答 Voted Best Answer agnul 2009-05-01T04:57:17+08:002009-05-01T04:57:17+08:00 最好的方法 export VAR=value 区别 正在做 VAR=value 仅在脚本持续时间内设置变量(.bashrc在本例中)。脚本的子进程(如果有的话)不会定义 VAR,一旦脚本退出VAR就消失了。 export VAR=value 显式添加VAR到传递给子进程的变量列表中。想试试吗?打开一个shell,做 PS1="foo > " bash --norc 新的 shell 获得默认提示。相反,如果你做类似的事情 export PS1="foo > " bash --norc 新的 shell 会得到你刚刚设置的提示。 更新:正如 Ian Kelling 所指出的,下面设置的变量.bashrc持续存在于 source 的 shell 中.bashrc。更一般地,每当 shell 获取脚本(使用source scriptname命令)时,脚本中设置的变量会在 shell 的生命周期内持续存在。 Mike H 2009-05-01T04:55:43+08:002009-05-01T04:55:43+08:00 两者似乎都工作得很好,但使用 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”
最好的方法
区别
正在做
仅在脚本持续时间内设置变量(
.bashrc
在本例中)。脚本的子进程(如果有的话)不会定义 VAR,一旦脚本退出VAR
就消失了。显式添加
VAR
到传递给子进程的变量列表中。想试试吗?打开一个shell,做新的 shell 获得默认提示。相反,如果你做类似的事情
新的 shell 会得到你刚刚设置的提示。
更新:正如 Ian Kelling 所指出的,下面设置的变量
.bashrc
持续存在于 source 的 shell 中.bashrc
。更一般地,每当 shell 获取脚本(使用source scriptname
命令)时,脚本中设置的变量会在 shell 的生命周期内持续存在。两者似乎都工作得很好,但使用 export 将确保该变量可用于子shell和其他程序。要测试这一点,试试这个。
将这两行添加到您的 .bashrc 文件中
然后打开一个新的shell。
运行
echo $TESTVAR
并将echo $MYTESTVAR
显示每个变量的内容。现在在同一个 shell 中,从 .bashrc 文件中删除这两行并运行bash
以启动子 shell。运行
echo $TESTVAR
会有空输出,但运行echo $MYTESTVAR
会显示“with export”