如何永久导出一个变量在Linux?

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

export DISPLAY=:0

当终端关闭时,该变量将丢失。我如何永久地添加这个,以便这个变量值始终存在于特定的用户?

339880 次浏览

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

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

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

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

    /etc/environment
    
  2. System-wide persistent variables that reference variables such as
    export PATH="$JAVA_PATH:$PATH" store in

    /etc/.bashrc
    
  3. User specific persistent variables in the format of PATH DEFAULT=/usr/bin:usr/local/bin store in

    ~/.pam_environment
    

For more details on #2, check this Ask Ubuntu answer. NOTE: #3 is the Ubuntu recommendation but may have security concerns in the real world.

一个特殊的例子: 我有Java 7和Java 6安装,我需要运行一些构建与6,其他人与7。因此,我需要动态地改变JAVA_HOME,以便maven为每个构建取到我想要的东西。我做了以下:

  • 创建j6.sh脚本,简单地导出JAVA_HOME=...路径到j6 install…
  • 然后,正如上面的注释之一所建议的,每当我需要J6进行构建时,我在相应的命令终端中运行源j6.sh。默认情况下,我的JAVA_HOME设置为J7。

希望这能有所帮助。

设置永久环境变量需要编辑三个文件,如下所示:

  • < h3 > ~ / . bashrc

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

    export DISPLAY=0
    
  • < h3 > ~ / . profile

    bashrc一样,你必须把上面提到的命令行放在这个文件的末尾,以便在每次登录操作系统时都有你的环境变量。

  • < h3 > / 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中,然后使其可执行,然后运行它!

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

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/