我正在运行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
在一个修改过的环境中运行一个程序,然后取消所有的修改。
只为当前的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'文件(或适当的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
要在Ubuntu中永久添加一个新的环境变量(仅在14.04中测试),请使用以下步骤。
1.打开一个终端(按CtrlAltT )。
2.sudo -H gedit /etc/environment
。
3.输入你的密码
4.编辑刚刚打开的文本文件。
例如,如果你想添加 "FOO=bar",那么就在新的一行中写上 "FOO=bar"。
5.5. 保存它
8.保存后,注销并再次登录。
9.你所需要的修改已经完成。
我知道这很晚了,但如果你想为所有用户添加一个环境变量(例如 JAVA的使用)--你可以做以下的事情。
用 nano 打开 /etc/bash.bashrc
(你可以使用任何编辑器,我不喜欢 VIM,因为它对用户的友好度是最差的,这不是针对你的)。
添加到文件中。
export VAR=path 出口PATH=$PATH:/bin。
3)(如果能弹出盒子更好)--或者干脆打开一个新的SSH会话,用`env'.命令确认。
命令进行确认。
但是如果你想让每个用户都有一个单独的设置,你必须对~/.bashrc
下的.bashrc
文件(或者/home/$USER/
,如果你是Linux系统的新手)进行修改(脚本)。