如何在Linux中永久导出variables?
我正在运行RHEL6,并且已经导出了一个像这样的环境variables:
export DISPLAY=:0
CMDclosures时,该variables将丢失。 我如何永久添加这个,以便这个variables值总是存在于一个特定的用户?
您可以将其添加到您的shellconfiguration文件,例如全局在/etc/environment
$HOME/.bashrc
或更多。
你必须编辑三个文件来设置一个永久的环境variables如下:
-
在〜/ .bashrc
当你打开任何terminal窗口时,这个文件将被运行。 因此,如果您希望在所有terminal窗口中都有一个永久环境variables,则必须在该文件的末尾添加以下行:
导出DISPLAY = 0 -
〜/ .profile文件
-
在/ etc /环境
和bashrc一样,你必须把上面提到的命令行放在这个文件的末尾,让你的环境variables在你的操作系统的每一个日志中。
如果你想在每个窗口或应用程序(不只是terminal窗口)你的环境variables,你必须编辑这个文件。 在该文件的末尾添加以下命令:
DISPLAY = 0
请注意,在这个文件中,您不必编写导出命令
通常情况下,您必须重新启动计算机才能应用此更改。 但是您可以通过以下命令在bashrc和profile中应用更改:
$ source ~/.bashrc
$ source ~/.profile
但是对于/ etc / environemnt,你别无select,只能重启(据我所知)
简单的解决scheme
我已经为这个程序写了一个简单的脚本来完成所有这些工作。 你只需要设置你的环境variables的名称和值。
#!/bin/bash echo "Enter variable name: " read variable_name echo "Enter variable value: " read variable_value echo "adding " $variable_name " to einvironment variables: " $variable_value echo "export "$variable_name"="$variable_value>>~/.bashrc echo $variable_name"="$variable_value>>~/.profile echo $variable_name"="$variable_value>>/etc/environment source ~/.bashrc source ~/.profile echo "do you wanna restart your computer to apply changes in /etc/environment file? yes(y)no(n)" read restart case $restart in y) sudo shutdown -r 0;; n) echo "don't forget to restart your computer manually";; esac exit
将这行保存在shfile中,然后使其可执行,并运行它!
将该行添加到.bashrc
或.profile
。 在$HOME/.profile
中设置的variables对当前用户是有效的, /etc/profile
中的variables是全局variables。 .bashrc
在每个bash会话开始时被拉。
在Ubuntu系统上,使用以下位置:
-
系统范围的持久variables,格式为
JAVA_PATH=/usr/local/java
/etc/environment
-
引用variables的系统范围持久variables,如
export PATH="$JAVA_PATH:$PATH"
存储在/etc/.bashrc
-
PATH DEFAULT=/usr/bin:usr/local/bin
存储的用户特定持久variables~/.pam_environment
有关#2的更多详情,请查看这个Ask Ubuntu的答案 。 注意:#3是Ubuntu的build议,但在现实世界中可能存在安全问题。
一个特殊的例子:我安装了Java 7和Java 6,我需要运行一些版本6,其他7版本。因此,我需要dynamic改变JAVA_HOME
以便maven拿起我想要的每个版本。 我做了以下几点:
- 创build
j6.sh
脚本,只是出口JAVA_HOME=...
path到J6安装… - 那么,正如上面的一个评论所build议的那样,无论何时我需要J6来构build,我
j6.sh
在相应的命令terminal中运行源码j6.sh
默认情况下,我的JAVA_HOME
被设置为J7。
希望这可以帮助。