如何在Linux中永久导出变量?

use*_*582 138 linux redhat environment-variables

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

export DISPLAY=:0
Run Code Online (Sandbox Code Playgroud)

当终端关闭时,该变量将丢失.如何永久添加此值以使该变量值始终与特定用户一起存在?

Ant*_*ine 156

您可以将其添加到shell配置文件中,例如$HOME/.bashrc或更全局地添加到shell配置文件中/etc/environment.

  • @ mini-me - 每次打开shell时都会拉出〜/ bashrc.要显式加载它,请使用`source` eg - - > source~/.bashrc`. (5认同)
  • 谢谢,这很有帮助.如何在不重启的情况下使更改生效?*(我是Linux新手)* (3认同)
  • @Mr.Hyde:通常没有关系。文件是从上到下解析的,所以如果一个 var 定义依赖于另一个,它们应该相应地排序。所以是的,文件的结尾很好。 (2认同)
  • 请注意,通常建议使用 ~/.bashrc、~/.bash_profile 和 ~/.bash_login 等 Shell 配置文件来设置环境变量。虽然这可能适用于从 shell 启动的程序的 Bash shell,但默认情况下,这些文件中设置的变量对于桌面会话中从图形环境启动的程序不可用。来自 https://help.ubuntu.com/community/环境变量 (2认同)

e_s*_*ush 107

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

  • 在〜/ .bashrc

    当您打开任何终端窗口时,将运行此文件.因此,如果您希望在所有终端窗口中都有永久环境变量,则必须在此文件的末尾添加以下行:
    export DISPLAY = 0

  • 〜/ .profile文件

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

  • 在/ etc /环境

  • 如果您希望在每个窗口或应用程序(而不仅仅是终端窗口)中使用环境变量,则必须编辑此文件.在此文件的末尾添加以下命令:
    DISPLAY = 0
    请注意,在此文件中,您不必编写export命令

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

$ 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
    
    Run Code Online (Sandbox Code Playgroud)

    将这些行保存在shfile中然后使其可执行并运行它!


    kos*_*tja 29

    将行添加到您的.bashrc.profile.设置的变量$HOME/.profile对当前用户是活动的,其中的变量/etc/profile是全局的.该.bashrc拉各的bash会话开始.


    csi*_*csi 27

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

    1. JAVA_PATH=/usr/local/java存储格式的系统范围持久变量

      /etc/environment
      
      Run Code Online (Sandbox Code Playgroud)
    2. 系统范围的持久变量,引用变量,例如
      export PATH="$JAVA_PATH:$PATH"store in

      /etc/.bashrc
      
      Run Code Online (Sandbox Code Playgroud)
    3. PATH DEFAULT=/usr/bin:usr/local/bin存储格式的用户特定持久变量

      ~/.pam_environment
      
      Run Code Online (Sandbox Code Playgroud)

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


    das*_*iel 7

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

    vi ~/.bash_profile
    
    Run Code Online (Sandbox Code Playgroud)

    将变量添加到文件中:

    export DISPLAY=:0
    export JAVA_HOME=~/opt/openjdk11
    
    Run Code Online (Sandbox Code Playgroud)

    立即应用所有更改:

    source ~/.bash_profile
    
    Run Code Online (Sandbox Code Playgroud)

    来源:如何在 Linux 中设置环境变量