如何在Linux中永久导出variables?

我正在运行RHEL6,并且已经导出了一个像这样的环境variables:

export DISPLAY=:0 

CMDclosures时,该variables将丢失。 我如何永久添加这个,以便这个variables值总是存在于一个特定的用户?

您可以将其添加到您的shellconfiguration文件,例如全局在/etc/environment $HOME/.bashrc或更多。

你必须编辑三个文件来设置一个永久的环境variables如下:

  • 在〜/ .bashrc

    当你打开任何terminal窗口时,这个文件将被运行。 因此,如果您希望在所有terminal窗口中都有一个永久环境variables,则必须在该文件的末尾添加以下行:
    导出DISPLAY = 0

  • 〜/ .profile文件

  • bashrc一样,你必须把上面提到的命令行放在这个文件的末尾,让你的环境variables在你的操作系统的每一个日志中。

  • 在/ etc /环境

  • 如果你想在每个窗口或应用程序(不只是terminal窗口)你的环境variables,你必须编辑这个文件。 在该文件的末尾添加以下命令:
    DISPLAY = 0
    请注意,在这个文件中,您不必编写导出命令

通常情况下,您必须重新启动计算机才能应用此更改。 但是您可以通过以下命令在bashrcprofile中应用更改:

$ 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系统上,使用以下位置:

    1. 系统范围的持久variables,格式为JAVA_PATH=/usr/local/java

       /etc/environment 
    2. 引用variables的系统范围持久variables,如
      export PATH="$JAVA_PATH:$PATH"存储在

       /etc/.bashrc 
    3. 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拿起我想要的每个版本。 我做了以下几点:

    • 创buildj6.sh脚本,只是出口JAVA_HOME=...path到J6安装…
    • 那么,正如上面的一个评论所build议的那样,无论何时我需要J6来构build,我j6.sh在相应的命令terminal中运行源码j6.sh 默认情况下,我的JAVA_HOME被设置为J7。

    希望这可以帮助。