我正在运行 Ubuntu 11.04。我使用终端启动 bash 会话,并且我想添加一个环境变量:
$r@hajt:~$ env THEVAR=/example
Run Code Online (Sandbox Code Playgroud)
但它不起作用。它显示了所有变量,其中 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 在修改后的环境中运行程序,然后取消所有更改。
Mic*_*jer 848
仅为当前 shell设置变量:
VARNAME="my value"
Run Code Online (Sandbox Code Playgroud)
为当前 shell 和从当前 shell 启动的所有进程设置它:
export VARNAME="my value" # shorter, less portable version
Run Code Online (Sandbox Code Playgroud)
要为所有未来的 bash 会话永久设置它,请将这样的行添加到您.bashrc目录中的文件中$HOME。
要永久设置它,并在系统范围内(所有用户,所有进程)在 /etc/environment 添加设置变量:
sudo -H gedit /etc/environment
Run Code Online (Sandbox Code Playgroud)
该文件只接受变量赋值,如:
VARNAME="my value"
Run Code Online (Sandbox Code Playgroud)
不要在export此处使用关键字。
您需要从当前用户注销并再次登录,以便环境变量发生更改。
les*_*ana 42
要设置一次环境变量,请export在提示中使用命令,而不是在 shell 脚本中:
$ export THEVAR=/example
Run Code Online (Sandbox Code Playgroud)
该变量将为 shell 会话的其余部分设置或直到未设置。
要每次设置环境变量,请使用文件中的export命令.bashrc(或适用于您的 shell 的相应初始化文件)。
要从脚本设置环境变量,请使用脚本中的export命令,然后source使用脚本。如果您执行该脚本,它将不起作用。
有关采购和执行之间区别的解释,请参阅此答案:https : //superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a- bash 脚本/176788#176788
小智 23
要在 Ubuntu 中永久添加新环境变量(仅在 14.04 中测试),请使用以下步骤:
sudo -H gedit /etc/environmentFOO=bar,则只需FOO=bar在新行中写入小智 16
要在脚本完成后保留环境/var 更改,您必须使用source ./script.sh或 源代码的速记符号“.”,例如. ./script.sh
Source 将执行脚本中的命令,就像您输入它们一样......所以它确实改变了脚本的某些方面,例如退出......所以如果你的脚本检查了一些东西并决定在错误时退出,例如,通过调用exit 0,它将终止您当前的终端/shell 会话。
小智 10
我知道现在已经很晚了,但是如果您想为所有用户添加一个环境变量(例如 JAVA 使用)-您可以执行以下操作:
1)/etc/bash.bashrc使用nano打开(你可以使用任何编辑器,我不喜欢VIM,因为它在用户友好性方面是最糟糕的——没什么个人的)。
2)附加到文件:
export VAR=path
export PATH=$PATH:/bin
3)(如果你能弹回盒子就更好了) - 或者简单地打开一个新的 SSH 会话并使用 `env' 命令进行确认。
但是,如果您希望每个用户对此都有一个单独的设置,则必须对.bashrc下的文件进行更改(脚本化)~/.bashrc(或者/home/$USER/如果您是 Linux 系统的新手)
如果您通过脚本做事,一种永久设置环境变量的简单方法是在脚本的下面语句中,
if [[ ! -d "$MyVar" ]]; then
export MyVar="abc"
echo 'export MyVar="abc"' >> ~/.bashrc
fi
Run Code Online (Sandbox Code Playgroud)
如果你需要评估像 pwd 这样的表达式,你可以使用它,例如,
echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1568407 次 |
| 最近记录: |