如何在Linux中设置环境变量
说明
环境变量通常在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
- 保存更改并退出文本编辑器