如何设置、列出和管理Linux环境变量(linuxprofile设置环境变量)

如何设置、列出和管理Linux环境变量(linuxprofile设置环境变量)

浏览次数:
信息来源: 用户投稿
更新日期: 2026-04-20
文章简介

环境变量是Linux管理的一个重要方面,它为工程师提供了一个强大的定制系统的工具。在本文中,我们将详细了解什么是Linux环境变量,它们与shell变量有何不同,以及如何列出、设置和管理它们。 Li

2025阿里云双十一服务器活动

环境变量是Linux管理的一个重要方面,它为工程师提供了一个强大的定制系统的工具。在本文中,我们将详细了解什么是Linux环境变量,它们与shell变量有何不同,以及如何列出、设置和管理它们。

Linux环境变量是shell及其子进程使用的动态变量。环境变量定义了与Linux系统如何工作相关的各个方面。例如,用户的默认shell是在SHELL变量中定义的。同样,许多管理员使用JAVA_HOME=环境变量将程序指向系统上特定版本的Java。

使用Linux环境变量时要记住的几个要点是:

  • 环境变量遵循<NAME>=<VALUE>格式。
  • 您可以通过用冒号分隔它们来为单个变量指定多个值,如下所示:

    <NAME>=<VALUE1>:<VALUE2>:<VALUE3>

  • 环境变量区分大小写。
  • 按照惯例,但不是规则,环境变量名称总是大写。
  • Shell变量与环境变量不同。Shell变量仅适用于当前shell,不适用于任何子进程。我们将在Linuxshell变量与Linux环境变量部分仔细研究这个主题。
  • 考虑到所有这些,让我们继续学习本教程。

    我们的示例使用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环境变量的其他方法包括:

  • declare-这个内置的shell实用程序可以使用此命令显示shell和环境变量。

  • set-显示shell变量、环境变量和shell函数。

  • compgen-v-显示所有shell和环境变量的名称。

    设置Linux环境变量的基本命令是

    export<NAME>='<value>'

    例如,要创建名为SANDWICH且值为PepperAndEgg的环境变量,请使用以下命令:

    如何设置、列出和管理Linux环境变量,linuxprofile设置环境变量

    要确认环境变量已创建,请使用命令

    您可以使用这个基本命令结构创建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环境变量对当前用户永久有效,请遵循以下过程:

  • 将目录更改为用户的主目录cd~
  • .profile在文本编辑器(例如nano、vi、vim等)中打开文件
  • 将以下行添加到文件底部:exportCOOLSERVER='Cherry'
  • 更改将在下次登录时生效。您可以使用以下命令使它们对当前终端生效:

    使用.bashrc使非登录交互式Shell的环境变量永久化

    对于非登录shell,您可以遵循与登录shell相同的过程,但不是编辑~/.profile文件,而是编辑~/.bashrc.

    使用/etc/environment使环境变量在系统范围内永久化

    警告:?系统上的任何shell都可以访问系统范围的变量,因此请谨慎设置。

    要设置系统范围的Linux环境变量,您可以编辑该/etc/environment文件。不是将导出命令附加到文件,而是将该<NAME>='<VALUE>'对附加到文件末尾。

    例如,要使我们的COOLSERVER环境变量对整个系统永久有效,请遵循以下过程:

  • 将目录更改为用户的主目录cd/etc
  • environment在文本编辑器(例如nano、vi、vim等)中打开文件
  • 将以下行添加到文件底部COOLSERVER='Cherry'
  • 标签:
    uuuvpsCN2GIA线路国外便宜VPS推荐(uu加速器国外节点)
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!