202

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

export DISPLAY=:0

当终端关闭时,该变量会丢失。如何永久添加此变量值以使该变量值始终存在于特定用户中?

4

6 回答 6

230

您可以将其添加到您的 shell 配置文件中,例如,$HOME/.bashrc或者在/etc/environment. 添加这些行后,更改不会立即反映在基于 GUI 的系统中,您必须退出终端或创建一个新终端,然后在服务器注销会话并登录以反映这些更改。

于 2012-10-24T09:45:12.050 回答
155

您必须编辑三个文件以设置永久环境变量,如下所示:

  • ~/.bashrc

    当您打开任何终端窗口时,该文件将运行。因此,如果您希望在所有终端窗口中都有一个永久环境变量,您必须在此文件末尾添加以下行:

    export DISPLAY=0
    
  • ~/.profile

    bashrc相同,您必须将提到的命令行放在此文件的末尾,以便在您的操作系统的每次登录中都有您的环境变量。

  • /etc/环境

    如果您希望在每个窗口或应用程序(不仅仅是终端窗口)中都使用环境变量,则必须编辑此文件。在此文件末尾添加以下命令:

    DISPLAY=0
    

    请注意,在此文件中您不必编写导出命令

通常,您必须重新启动计算机才能应用这些更改。但是您可以通过以下命令在bashrc配置文件中应用更改:

$ source ~/.bashrc
$ source ~/.profile

但是对于/etc/environment你别无选择,只能重新启动(据我所知)

一个简单的解决方案

我为这些程序编写了一个简单的脚本来完成所有这些工作。您只需设置环境变量的名称和值。

#!/bin/bash
echo "Enter variable name: "
read variable_name
echo "Enter variable value: "
read variable_value
echo "adding " $variable_name " to environment 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 want to 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 中,然后使其可执行并运行它!

于 2015-07-21T18:31:55.753 回答
31

将该行添加到您的.bashrc.profile. 设置的变量$HOME/.profile对当前用户有效,其中的变量/etc/profile是全局的。.bashrc每次 bash 会话开始时都会拉出。

于 2012-10-24T09:45:11.567 回答
30

在 Ubuntu 系统上,使用以下位置:

  1. 系统范围的持久变量,格式为JAVA_PATH=/usr/local/javastore in

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

    /etc/.bashrc
    
  3. 用户特定的持久变量,格式为PATH DEFAULT=/usr/bin:usr/local/binstore in

    ~/.pam_environment
    

有关 #2 的更多详细信息,请查看此 Ask Ubuntu answer。注意:#3 是 Ubuntu 建议,但在现实世界中可能存在安全问题。

于 2013-12-02T16:10:32.650 回答
7

如果它适合任何人,这里有一些关于永久添加环境变量的简要指南。

vi ~/.bash_profile

将变量添加到文件中:

export DISPLAY=:0
export JAVA_HOME=~/opt/openjdk11

立即应用所有更改:

source ~/.bash_profile

来源:https ://www.serverlab.ca/tutorials/linux/administration-linux/how-to-set-environment-variables-in-linux/

于 2020-04-07T14:06:06.250 回答
3

一个特定的例子:我安装了 Java 7 和 Java 6,我需要运行一些带有 6 的构建,其他带有 7 的构建。因此我需要动态更改JAVA_HOME,以便 maven 为每个构建选择我想要的。我做了以下事情:

  • 创建的j6.sh脚本只是将JAVA_HOME=...路径导出到 j6 安装...
  • 然后,正如上述评论之一所建议的那样,每当我需要 J6 进行构建时,我都会j6.sh在相应的命令终端中运行源代码。默认情况下,我JAVA_HOME的设置为 J7。

希望这可以帮助。

于 2015-03-03T12:35:19.060 回答