如何添加环境变量?

我正在运行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中测试),请使用以下步骤:

  1. 打开终端(按Ctrl Alt T
  2. sudo -H gedit /etc/environment
  3. 输入密码
  4. 编辑刚刚打开的文本文件:
    例如,如果你想添加FOO=bar ,那么只需在新行中写入FOO=bar
  5. 保存
  6. 保存后,再次注销并登录。
  7. 您需要进行更改。

要在脚本完成后使环境/ var更改保持不变,您必须使用source ./script.shsource ./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