Ollie
#1
我正在运行Ubuntu11.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
在修改后的环境中运行程序,然后取消所有更改。
Ray
#2
设置变量 只有 对于当前壳:
VARNAME="my value"
要将其设置为当前shell和 所有工序 从当前shell启动:
export VARNAME="my value" # shorter, less portable version
来设置它 永久 对于所有未来的bash会话添加这样的行到您的 .bashrc
在你的 $HOME
目录。
永久地设置它,以及 系统范围 (所有用户,所有进程)在/etc/environment中添加set变量:
sudo -H gedit /etc/environment
此文件只接受变量赋值,如:
VARNAME="my value"
不要使用 export
关键字在这里。
您需要从当前用户注销并重新登录,以便环境变量发生更改。
要设置一次环境变量,请使用 export
命令在提示符中,而不是在shell脚本中:
$ export THEVAR=/example
该变量将被设置为shell会话的其余部分或直到取消设置。
要每次设置环境变量,请使用 export
命令在 .bashrc
文件(或您的shell的适当初始化文件)。
要从脚本设置环境变量,请使用 export
脚本中的命令,然后 source
的脚本。 如果您执行脚本,它将不起作用。
有关sourcing和execution之间差异的解释,请参阅此答案: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788
要在Ubuntu中永久添加新的环境变量(仅在14.04中测试),请使用以下步骤:
- 打开终端(按 CtrlAltT)
sudo -H gedit /etc/environment
- 输入您的密码
- 编辑刚刚打开的文本文件:
例如,如果你想添加 FOO=bar
,然后就写 FOO=bar
在新行中
- 省省吧
- 保存后,注销并重新登录。
- 您所需的更改已进行。
Gene_H
#5
要在脚本完成后保留环境/var更改,您必须使用source ./script.sh
或源的简写符号,"。",像 . ./script.sh
Source将执行脚本中的命令,就像您键入它们一样。.. 所以它确实改变了脚本的某些方面,例如退出。.. 因此,如果您的脚本检查某些内容并决定退出(如果为false),例如,通过调用 exit 0
,它将终止您当前的终端/shell会话。
Quinn
#6
我知道这已经很晚了,但是如果你想为所有用户添加一个环境变量(例如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"' >> ~/.bashrcfi
如果您需要评估像pwd这样的表达式,您可以使用它,例如,
echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
如果您使用的是Ubuntu或任何基于Unix的系统,那么将变量导出到 ~/.bashrc
档案。 这是一个隐藏文件,您可以通过终端或通过取消隐藏文件系统中的隐藏文件到达那里。
然后编辑文件并设置 export THEVAR=/example
在那里,保存和它的完成。
如果您正在使用TOMCAT部署JAVA aplication,则可以通过以下方式设置环境变量:
1.sudo su和cd到/var/lib/tomcat8/bin/(或您的tomcat bin路径)
触摸setenv.sh(如果它不存在),如果文件存在已经做'vi setenv.sh'
chmod777setenv.sh (使文件可执行)
六setenv.sh 并在setenv中设置以下行。shexport键=值
sudo systemctl重启tomcat。服务
在java文件中,您可以使用以下代码检查变量是否已设置
private static void printEnv() { System.out.println("******************************Environment Vars*****************************"); Map<String, String> enviorntmentVars = System.getenv(); enviorntmentVars.entrySet().forEach(System.out::println); System.out.println("******************************system Vars*****************************"); Properties enviorntmentProperties = System.getProperties(); enviorntmentVars.entrySet().forEach(System.out::println);}
另一个是关于全局变量,这个没有添加这样的限制。 我会把它分开的。
Eli_D
#14