我如何添加环境变量?
我正在运行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
在一个修改过的环境中运行一个程序,然后取消所有的修改。
380
6
只为当前的shell设置变量***。
要为当前shell和从当前shell启动的**所有进程设置。
要为今后所有的bash会话永久地设置它,请在
$HOME
目录下的.bashrc
文件中添加这样一行。要永久设置它,并且系统范围内(所有用户,所有进程),请在/etc/environment中添加set变量。
该文件只接受像这样的变量赋值。
不要在这里使用 "export "关键字。
你需要从当前用户注销并再次登录,这样环境变量才会发生变化。
要设置一次环境变量,在提示符下使用
export
命令,而不是在shell脚本中。该变量将在剩余的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.你所需要的修改已经完成。要想在脚本完成后让环境/变量的变化持久化,你必须使用
source ./script.sh
或者source的简写符号".",比如. ./script.sh
。源码会执行脚本中的命令,就像你输入它们一样......。 所以它确实改变了脚本的某些方面,比如退出......。 所以,如果你的脚本检查了一些东西,并决定在false时退出,例如,通过调用
exit 0
,它将终止你当前的终端/shell会话。如果你是通过脚本来做事情,一个简单的方法是在你的脚本中放入以下语句来永久设置环境变量。
如果你需要评估像pwd这样的表达式,你可以使用这个,例如。
我知道这很晚了,但如果你想为所有用户添加一个环境变量(例如 JAVA的使用)--你可以做以下的事情。
用 nano 打开
/etc/bash.bashrc
(你可以使用任何编辑器,我不喜欢 VIM,因为它对用户的友好度是最差的,这不是针对你的)。添加到文件中。
export VAR=path 出口PATH=$PATH:/bin。
3)(如果能弹出盒子更好)--或者干脆打开一个新的SSH会话,用`env'.命令确认。 命令进行确认。但是如果你想让每个用户都有一个单独的设置,你必须对
~/.bashrc
下的.bashrc
文件(或者/home/$USER/
,如果你是Linux系统的新手)进行修改(脚本)。