如何添加环境变量?
我正在运行Ubuntu 11.04。 我使用终端启动bash会话,我想添加一个环境变量:
$r@hajt:~$ env THEVAR=/example
但它不起作用。 它显示了所有变量,其中THEVAR是最后一个,但是对env
另一个调用不再显示THEVAR- env | grep THEVAR
env | grep THEVAR
什么都不返回。
同样,带导出( export THEVAR=/example
)或其他变量赋值( THEVAR=/example
)的THEVAR=/example
不会添加环境变量。
我知道我做错了什么,我知道它应该是简单的东西,但我找不到什么。
更新:我的问题的真正含义是这一个: https : //stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(无论如何,我会选择投票最多的答案并留下编辑后的标题 – 这不是我所要求的)
env
在修改后的环境中运行程序,然后解除所有更改。
要仅为当前shell设置变量:
VARNAME="my value"
要为当前shell设置它,并从当前shell启动所有进程 :
export VARNAME="my value" # shorter, less portable version
要为将来的所有bash会话永久设置它,请将此行添加到$HOME
目录中的.bashrc
文件中。
要永久地设置它,并且系统范围 (所有用户,所有进程)在/ etc / environment中添加set变量:
sudo -H gedit /etc/environment
此文件只接受变量赋值,如:
VARNAME="my value"
请勿在此处使用export
关键字。
您需要从当前用户注销并再次登录,以便进行环境变量更改。
要设置一次环境变量,请在提示符中使用export
命令,而不是在shell脚本中:
$ export THEVAR=/example
该变量将为shell会话的其余部分设置或直到取消设置。
要每次都设置一个环境变量,请使用.bashrc
文件中的export
命令(或shell的相应初始化文件)。
要从脚本设置环境变量,请在脚本中使用export
命令,然后获取脚本。 如果你执行脚本它将无法正常工作。
有关采购和执行之间差异的解释,请参阅以下答案: https : //superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-庆典脚本/ 176788#176788
要在Ubuntu中永久添加新的环境变量(仅在14.04中测试),请使用以下步骤:
- 打开终端(按Ctrl Alt T 键 )
-
sudo -H gedit /etc/environment
- 输入密码
- 编辑刚刚打开的文本文件:
例如,如果你想添加FOO=bar
,那么只需在新行中写入FOO=bar
- 保存
- 保存后,再次注销并登录。
- 您需要进行更改。
要在脚本完成后使环境/ var更改保持不变,您必须使用source ./script.sh
或source ./script.sh
的简写表示法,“。”等. ./script.sh
. ./script.sh
Source将执行脚本中的命令,就好像您已将它们键入…所以它确实更改了脚本的某些方面,例如退出…所以如果您的脚本检查某些内容并决定退出,如果为false,例如,通过调用exit 0
,它将终止当前的终端/ shell会话。
如果您是通过脚本执行操作,则在脚本中将一个简单的方法设置为永久设置环境变量,
if [[ ! -d "$MyVar" ]]; then export MyVar="abc" echo 'export MyVar="abc"' >> ~/.bashrc fi
如果你需要像pwd一样评估表达式,你可以使用它,例如,
echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc