Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Linux中永久导出变量?_Linux_Environment Variables_Redhat - Fatal编程技术网

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

如何在Linux中永久导出变量?,linux,environment-variables,redhat,Linux,Environment Variables,Redhat,我正在运行RHEL6,并导出了如下环境变量: export DISPLAY=:0 当终端关闭时,该变量丢失。如何永久添加此变量,以便此变量值始终存在于特定用户中?将该行添加到.bashrc或.profile中。$HOME/.profile中设置的变量对于当前用户是活动的,/etc/profile中的变量是全局变量。.bashrc在每次bash会话启动时都会被拉入。您可以将其添加到shell配置文件中,例如,$HOME/.bashrc或在/etc/environment中的更多全局配置文件中。

我正在运行RHEL6,并导出了如下环境变量:

export DISPLAY=:0

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

将该行添加到
.bashrc
.profile
中。
$HOME/.profile
中设置的变量对于当前用户是活动的,
/etc/profile
中的变量是全局变量。
.bashrc
在每次bash会话启动时都会被拉入。

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

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

  • 格式为
    JAVA\u PATH=/usr/local/JAVA
    的系统范围持久变量存储在

    /etc/environment
    
    /etc/.bashrc
    
    ~/.pam_environment
    
  • 引用变量(如
    export PATH=“$JAVA\u PATH:$PATH”
    storein

    /etc/environment
    
    /etc/.bashrc
    
    ~/.pam_environment
    
  • 用户特定的持久变量,格式为
    PATH DEFAULT=/usr/bin:usr/local/bin
    存储在

    /etc/environment
    
    /etc/.bashrc
    
    ~/.pam_environment
    
  • 有关#2的更多详细信息,请查看此 . 注意:#3是Ubuntu的建议,但在现实世界中可能存在安全问题。

    一个特定示例: 我已经安装了Java7和Java6,我需要用6运行一些构建,用7运行其他构建。因此,我需要动态地修改
    JAVA\u HOME
    ,以便maven为每个构建获取我想要的内容。我做了以下工作:

    • 创建了
      j6.sh
      脚本,该脚本只导出
      JAVA\u HOME=…
      j6安装路径
    • 然后,正如上面的一条评论所建议的,每当我需要J6进行构建时,我都会在相应的命令终端中运行source
      J6.sh
      。默认情况下,my
      JAVA\u HOME
      设置为J7

    希望这有帮助。

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

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

      export DISPLAY=0
      
      DISPLAY=0
      
    • ~/.剖面图 与bashrc相同,您必须将所提到的命令行放在该文件的末尾,以便在操作系统的每次登录中使用环境变量

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

      export DISPLAY=0
      
      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
    

    将这些行保存在一个SHF文件中,然后运行它

    如果它适合任何人,下面是一些永久添加环境变量的简要指南

    vi ~/.bash_profile
    
    将变量添加到文件中:

    export DISPLAY=:0
    export JAVA_HOME=~/opt/openjdk11
    
    立即应用所有更改:

    source ~/.bash_profile
    

    来源:

    谢谢,这很有帮助。如何在不重新启动的情况下使更改生效?(我是Linux新手)@mini me-~/bashrc在每次打开shell时都会被拉入。要显式加载它,请对所有新shell使用
    source
    例如-
    >source~/.bashrc
    @kostja?如果我在更改这些环境变量之前运行了eclipse,并且我希望eclipse更改了变量,那么我必须重新启动eclipse吗?@mini-me:进程的环境通常由调用方设置,并从进程内部更改。从正在运行的流程外部更改env是不寻常的,并且在导出时不可行,但是@Mr.Hyde:这通常并不重要。文件是从上到下解析的,因此,如果一个var定义依赖于另一个var定义,则应该对它们进行相应的排序。是的,文件的结尾很好,脚本运行得很好。我已经安装了Ubuntu 14.04。我只是将上面的内容粘贴到一个空白文件中,名为insert_var.sh,然后
    chmod-x insert_var.sh
    ,然后
    bash insert_var.sh
    。谢谢。我在Ubuntu中打开了一个终端窗口,输入export MY_VAR=1。此变量MY_VAR将存储在哪里?您的变量
    MY_VAR
    将仅是您正在处理的当前shell的一部分。如果关闭shell,则变量将不可访问。