环境变量是Linux管理的一个重要方面,它为工程师提供了一个强大的定制系统的工具。在本文中,我们将详细了解什么是Linux环境变量,它们与shell变量有何不同,以及如何列出、设置和管理它们。
Linux环境变量是shell及其子进程使用的动态变量。环境变量定义了与Linux系统如何工作相关的各个方面。例如,用户的默认shell是在SHELL变量中定义的。同样,许多管理员使用JAVA_HOME=环境变量将程序指向系统上特定版本的Java。
使用Linux环境变量时要记住的几个要点是:
<NAME>=<VALUE1>:<VALUE2>:<VALUE3>
考虑到所有这些,让我们继续学习本教程。
我们的示例使用Ubuntu20.04和GNUBash5.0.17,但您可以在大多数现代Linux系统上进行操作。
如何列出Linux环境变量列出Linux环境变量
的方法有多种,这里我们将演示一些最常见的方法。
使用printenv列出Linux环境变量
该printenv命令显示当前环境变量。
您可以printenv通过运行不带任何选项或参数的命令来列出所有当前的Linux环境变量。
SUPERBREAKFAST=PepperandEgg
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
SSH_CONNECTION=24.148.23.154206884.32.188.15422
EASTEREGG=Youpayattentiontodetail,goodjob!
LESSCLOSE=/usr/bin/lesspipe%s%s
LESSOPEN=|/usr/bin/lesspipe%s
XDG_RUNTIME_DIR=/run/user/0
SSH_CLIENT=24.148.23.154206822
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus
您还可以printenv用来显示各个环境变量。显示单个Linux环境变量的基本语法printenv是:
例如,要打印PWD环境变量,请使用以下命令:
输出应该显示您的shell的当前工作目录。
env命令可以列出所有环境变量,输出类似于printenv.?要使用env列出所有Linux环境变量,请运行不带任何选项或参数的命令,如下所示:
在大多数情况下,env输出应与printenv除_=变量外的输出相匹配。发生这种情况是因为该_=变量是用于调用shell或shell脚本的特殊Bash参数。如果您在现代Linux系统上使用env,该?_=值将匹配env二进制文件的位置(例如/usr/bin/env)。如果您使用printenv,它将匹配printenv二进制文件的位置(例如/usr/bin/printenv)。
使用echo显示Linux环境变量
显示单个Linux环境变量的最快方法之一是使用echo命令。基本语法是echo$<variable_name>.
例如,要打印PATH环境变量,请使用以下命令:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
该echo$<variable_name>命令也适用于不是环境变量的shell变量。例如,如果我们创建一个BREAKFAST变量并将其设置为'Pepper&Egg',我们可以看到输出withecho$BREAKFAST但看不到with?printenv。
列出Linux环境变量的其他方法
列出Linux环境变量的其他方法包括:
设置Linux环境变量的基本命令是
export<NAME>='<value>'
例如,要创建名为SANDWICH且值为PepperAndEgg的环境变量,请使用以下命令:

要确认环境变量已创建,请使用命令
您可以使用这个基本命令结构创建shell变量<NAME>='<value>'。
例如,要创建一个名为COOLSERVER且值为Cherry的shell变量,请使用以下命令:
您可以使用以下命令确认变量现在存在:
要确认该变量不是环境变量,请执行以下命令:
因为变量不是环境变量,所以应该没有输出:
如何将Shell变量转换为环境变量
要将shell变量转换为环境变量,基本的命令语法是export<Shell_Variable_Name>.
例如,要将上一示例中的COOLSERVER变量转换为环境变量,请使用以下命令:
现在,该printenvCOOLSERVER命令应打印Cherry作为输出:
LinuxShell变量与Linux环境变量
到目前为止,您可以看到shell变量和环境变量是不同的东西。现在,让我们仔细看看差异及其重要性。
Linuxshell变量和Linux环境变量之间的主要区别在于:
shell变量不与shell的子进程共享,环境变量与shell的子进程共享。
为了说明为什么这种差异很重要,让我们通过一个简单的bash脚本来演示一个示例。
创建一个名为CLOUD的变量并将值设置为CherryServers!.
接下来,使用echo命令显示变量。
现在,创建一个test.sh包含相同命令的bash脚本。该脚本应如下所示:
https://www.mfisp.com/test.sh
输出为空的原因是因为$CLOUD它是一个shell变量。它包含在当前shell实例中。同时,test.sh脚本启动一个新进程,并且由于$CLOUD未设置环境变量,脚本不打印任何内容。
让我们$CLOUD用这个命令创建一个环境变量(注意不要在变量名前使用$):
现在,再次运行test.sh脚本。
https://www.mfisp.com/test.sh
删除现有Linux环境变量的基本语法是unset<NAME>.
例如,要取消设置我们的COOLSERVER变量,请使用以下命令:
要确认变量现在已删除,请执行以下命令:
因为变量不是环境变量,所以应该没有输出:
如何使Linux环境变量永久化
到目前为止,我们创建的环境变量只会在您的shell会话期间持续存在。如果您注销或重新启动,您需要重新创建它们才能使用它们。
幸运的是,有几种方法可以使Linux环境变量在不同的shell会话中保持不变。
使用.profile使登录Shell的环境变量永久化
该.profiile文件存在于用户的主目录中。您可以通过编辑用户的.profile文件以包含用于设置环境变量的导出命令来为用户添加环境变量。
例如,要使我们的COOLSERVER环境变量对当前用户永久有效,请遵循以下过程:
更改将在下次登录时生效。您可以使用以下命令使它们对当前终端生效:
使用.bashrc使非登录交互式Shell的环境变量永久化
对于非登录shell,您可以遵循与登录shell相同的过程,但不是编辑~/.profile文件,而是编辑~/.bashrc.
使用/etc/environment使环境变量在系统范围内永久化
警告:?系统上的任何shell都可以访问系统范围的变量,因此请谨慎设置。
要设置系统范围的Linux环境变量,您可以编辑该/etc/environment文件。不是将导出命令附加到文件,而是将该<NAME>='<VALUE>'对附加到文件末尾。
例如,要使我们的COOLSERVER环境变量对整个系统永久有效,请遵循以下过程:
本文来源:国外服务器--如何设置、列出和管理Linux环境变量(linuxprofile设置环境变量)
本文地址:https://www.idcbaba.com/guowai/4860.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



