我如何添加环境变量?

我正在运行Ubuntu 11.04。我使用终端来启动一个bash会话,我想添加一个环境变量。

$r@hajt:~$ env THEVAR=/example

但它没有工作。它显示了所有的变量,THEVAR是最后一个,但再次调用 "env "时就不再显示 "THEVAR "了--"env | grep THEVAR "没有返回。

同样,带有导出(export THEVAR=/example)或其他变量赋值(THEVAR=/example)的脚本也不会添加环境变量。

我知道我做错了什么,我知道这应该是很简单的事情,但我就是找不到什么。

更新了。 我的问题的真正含义是这样的:https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell

(无论如何,我将选择投票最多的答案,并保留编辑过的标题--那不是我所问的问题)

env在一个修改过的环境中运行一个程序,然后取消所有的修改。

对该问题的评论 (5)
解决办法

只为当前的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 "关键字。

你需要从当前用户注销并再次登录,这样环境变量才会发生变化。

评论(7)

要设置一次环境变量,在提示符下使用export命令,而不是在shell脚本中。

$ export THEVAR=/example

该变量将在剩余的shell会话中被设置,或者直到取消设置。

要想每次都设置一个环境变量,请使用.bashrc'文件(或适当的shell初始化文件)中的export'命令。

要从一个脚本中设置一个环境变量,在脚本中使用export命令,然后source脚本。如果你执行该脚本,它将不会起作用。

关于source和executing的区别的解释,请看这个答案:https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788

评论(1)

要在Ubuntu中永久添加一个新的环境变量(仅在14.04中测试),请使用以下步骤。

1.打开一个终端(按CtrlAltT )。 2.sudo -H gedit /etc/environment。 3.输入你的密码 4.编辑刚刚打开的文本文件。 例如,如果你想添加 "FOO=bar",那么就在新的一行中写上 "FOO=bar"。 5.5. 保存它 8.保存后,注销并再次登录。 9.你所需要的修改已经完成。

评论(5)

要想在脚本完成后让环境/变量的变化持久化,你必须使用source ./script.sh或者source的简写符号".",比如. ./script.sh

源码会执行脚本中的命令,就像你输入它们一样......。 所以它确实改变了脚本的某些方面,比如退出......。 所以,如果你的脚本检查了一些东西,并决定在false时退出,例如,通过调用exit 0,它将终止你当前的终端/shell会话。

评论(3)

如果你是通过脚本来做事情,一个简单的方法是在你的脚本中放入以下语句来永久设置环境变量。

if [[ ! -d "$MyVar" ]]; then 
    export MyVar="abc"
    echo 'export MyVar="abc"' >> ~/.bashrc
fi

如果你需要评估像pwd这样的表达式,你可以使用这个,例如。

echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
评论(0)

我知道这很晚了,但如果你想为所有用户添加一个环境变量(例如 JAVA的使用)--你可以做以下的事情。

  1. 用 nano 打开 /etc/bash.bashrc (你可以使用任何编辑器,我不喜欢 VIM,因为它对用户的友好度是最差的,这不是针对你的)。

  2. 添加到文件中。

export VAR=path 出口PATH=$PATH:/bin。 3)(如果能弹出盒子更好)--或者干脆打开一个新的SSH会话,用`env&#39.命令确认。 命令进行确认。

但是如果你想让每个用户都有一个单独的设置,你必须对~/.bashrc下的.bashrc文件(或者/home/$USER/,如果你是Linux系统的新手)进行修改(脚本)。

评论(0)