我正在运行 Ubuntu 11.04。我使用终端启动 bash 会话,并且我想添加一个环境变量:
$r@hajt:~$ env THEVAR=/example
但它不起作用。它显示了所有变量,其中 THEVAR 是最后一个,但对的另一个调用env
不再显示 -THEVAR
什么env | grep THEVAR
也没有返回。
类似地,带有 export( export THEVAR=/example
) 或其他变量赋值(THEVAR=/example
)的脚本不会添加环境变量。
我知道我做错了什么,我知道这应该是件简单的事情,但我就是找不到是什么。
更新:我的问题的真正含义是这样的:
(无论如何,我会选择得票最多的答案并保留编辑后的标题 - 这不是我想要的)
env
在修改后的环境中运行程序,然后忽略所有更改。
答案1
设置变量仅有的对于当前 shell:
VARNAME="my value"
为当前 shell 设置它并所有流程从当前 shell 启动:
export VARNAME="my value" # shorter, less portable version
设置它永久对于所有未来的 bash 会话,请将这行添加到目录.bashrc
中的文件中$HOME
。
要永久设置它,并且系统范围(所有用户,所有进程)在 /etc/environment 中添加设置变量:
sudo -H gedit /etc/environment
该文件仅接受变量分配,例如:
VARNAME="my value"
export
这里不要使用关键字。
在您的终端上使用source ~/.bashrc
以使更改立即生效。
答案2
要设置一次环境变量,请使用export
提示符中的命令,而不是在 shell 脚本中:
$ export THEVAR=/example
该变量将被设置为 shell 会话的剩余时间或者直到取消设置。
要每次设置环境变量,请使用文件export
中的命令.bashrc
(或适合您的 shell 的初始化文件)。
要从脚本设置环境变量,请使用export
脚本中的命令,然后使用source
脚本。如果执行脚本,则不会起作用。
有关采购和执行之间的区别的解释,请参阅以下答案:
答案3
要在 Ubuntu 中永久添加新的环境变量(仅在 14.04 中测试),请使用以下步骤:
- 打开终端(按CtrlAltT)
sudo -H gedit /etc/environment
- 输入密码
- 编辑刚刚打开的文本文件:
例如,如果您想添加,则只需在新行中FOO=bar
写入FOO=bar
- 保存
- 保存后,注销并重新登录。
- 您所需的更改已完成。
答案4
我知道已经很晚了,但是如果您想为所有用户添加环境变量(例如 JAVA 使用) - 您可以执行以下操作:
1)/etc/bash.bashrc
使用 nano 打开(您可以使用任何编辑器,我不喜欢 VIM,因为在用户友好性方面它是最差的 - 不是个人原因)。
2)附加到文件:
export VAR=path export PATH=$PATH:/bin
3)(如果您可以弹出该框就更好了) - 或者只需打开一个新的 SSH 会话并使用“env”命令进行确认。
但是如果您希望每个用户都有单独的设置,您必须对.bashrc
文件进行更改(脚本) ~/.bashrc
(或者/home/$USER/
如果您是 Linux 系统新手)