如何在Linux中设置环境变量

时间:2020-01-09 10:39:42  来源:igfitidea点击:

说明

环境变量通常在Bash shell中使用。在本教程中,我们将学习如何在Ubuntu,CentOS,Red Hat上设置环境变量。我们还将学习如何列出所有环境变量以及如何取消设置(清除)现有环境变量。

设置环境变量

要设置环境变量,请使用export命令。我们给变量指定一个名称,该名称是在shell脚本和配置中用来访问它的名称,然后是一个值,用于保存变量中需要的所有数据。

export NAME=VALUE

例如,要为手动OpenJDK 11安装的主目录设置环境变量,我们将使用类似于以下内容的东西。

export JAVA_HOME=/opt/openjdk11

要从外壳程序输出环境变量的值,我们使用echo命令,并在变量名前加一个美元($)符号。

echo $JAVA_HOME

只要变量具有值,它就会被回显。如果未设置任何值,则将显示一个空行。

取消环境变量

要取消设置环境变量以完全删除其存在,请使用unset命令。仅用空字符串替换环境变量不会将其删除,并且在大多数情况下,可能会导致期望有效值的脚本或者应用程序出现问题。

要遵循以下语法来取消设置环境变量

unset VARIABLE_NAME

例如,要取消设置JAVA_HOME环境变量,我们将使用以下命令。

unset JAVA_HOME

列出所有设置的环境变量

要列出所有环境变量,我们只需使用不带任何参数的set命令。

set

输出的示例看起来类似于以下内容,为简洁起见已将其截断。

BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
 BASH_ALIASES=()
 BASH_ARGC=([0]="0")
 BASH_ARGV=()
 BASH_CMDS=()
 BASH_COMPLETION_VERSINFO=([0]="2" [1]="8")
 BASH_LINENO=()
 BASH_SOURCE=()
 BASH_VERSINFO=([0]="5" [1]="0" [2]="3" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
 BASH_VERSION='5.0.3(1)-release'
 COLUMNS=208
 DIRSTACK=()
 EUID=1000
 GROUPS=()
 HISTCONTROL=ignoreboth
 HISTFILE=/home/ubuntu/.bash_history
 HISTFILESIZE=2000
 HISTSIZE=1000
 HOME=/home/ubuntu
 HOSTNAME=ubuntu1904
 HOSTTYPE=x86_64
 IFS=$' \t\n'
 LANG=en_US.UTF-8
 LESSCLOSE='/usr/bin/lesspipe %s %s'
 LESSOPEN='| /usr/bin/lesspipe %s'
 LINES=54

为用户保留环境变量

使用导出命令从外壳程序设置环境变量后,当用户会话结束时,环境变量的存在也将终止。当我们需要变量在会话之间持久存在时,这是有问题的。

为了使环境对用户的环境持久,我们从用户的配置文件脚本中导出变量。

  • 在文本编辑器中打开当前用户的个人资料
vi ~/.bash_profile
  • 为要保留的每个环境变量添加导出命令。
export JAVA_HOME=/opt/openjdk11
  • 保存更改。

仅将环境变量添加到用户的bash配置文件不会自动导出它。但是,该变量将在用户下次登录时导出。

要立即将所有更改应用于bash_profile,请使用source命令。

source ~/.bash_profile

导出环境变量

导出是Bash的内置shell命令,用于导出环境变量以允许新的子进程继承它。

要导出环境变量,请在设置变量时运行export命令。

export MYVAR="my variable value"

通过运行不带任何参数的export命令,我们可以查看导出的环境变量的完整列表。

export
SHELL=/bin/zsh
SHLVL=1
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.1pB5Pry8Id/Listeners
TERM=xterm-256color
TERM_PROGRAM=vscode
TERM_PROGRAM_VERSION=1.48.2

要查看当前shell中所有导出的变量,请在带有export的情况下使用-p标志。

export -p

为所有用户设置永久全局环境变量

通过将其添加到默认配置文件中,可以创建在重启后仍然存在的永久性环境变量。该配置文件由系统上的所有用户(包括服务帐户)加载。

所有全局配置文件设置都存储在/ etc / profile下。尽管可以编辑该文件的目录,但实际上建议将全局环境变量存储在名为/etc/profile.d的目录中,我们将在其中找到用于设置整个系统环境变量的文件列表。

  • 在/etc/profile.d下创建一个新文件,以存储全局环境变量。的名称应与上下文相关,以便其他人可以理解其目的。为了演示,我们将为HTTP_PROXY创建一个永久环境变量。
sudo touch /etc/profile.d/http_proxy.sh
  • 在文本编辑器中打开默认配置文件。
sudo vi /etc/profile.d/http_proxy.sh
  • 添加新行以导出环境变量
export HTTP_PROXY=http://my.proxy:8080
export HTTPS_PROXY=https://my.proxy:8080
export NO_PROXY=localhost,::1,.example.com
  • 保存更改并退出文本编辑器