设置及查看Linux的环境变量详细教程
Linux 操作系统广泛用于服务器,以承载复杂的应用程序,这些应用程序具有非常具体的系统设置。当您启动一个新的 Linux shell 会话时,会读取某个系统配置并相应地设置您的计算机。这些配置和设置由环境变量控制。
我们将了解如何在 Linux 系统中列出和设置环境变量。
目录
- 先决条件
- Linux中的环境变量是什幺
- 列出当前环境变量
- 设置环境变量
- 设置环境变量持久化
- 取消设置环境变量
- 结论
先决条件
- 具有终端访问权限的 Linux 计算机。
- 熟悉 Linux 命令行界面。
Linux中的环境变量是什幺
Linux 操作系统支持两种类型的变量——环境变量和 shell 变量。这些变量会影响您的应用程序和程序的工作方式。
环境变量是影响整个系统的系统范围的变量。它们被所有 shell 和衍生的子进程使用,并且在命令行和 GUI 上都可用。Linux 环境变量是为程序和进程提供必要信息的动态系统值。这些变量控制默认 Web 浏览器、默认文件编辑器或默认文本编辑器、可执行文件、键盘布局设置、目录路径和系统区域设置等内容。基本上,这些是具有分配给它们的值的名称。例如,我们使用 JAVA_HOME 变量来设置安装 JDK 或 JRE 的目录位置。
Shell 变量是特定 shell 实例的本机变量,仅影响 shell 函数。每个 Linux 操作系统 shell,例如 Bash 和 Korn,都有自己的内部 shell 变量。这有助于跟踪当前会话中的数据——主要用于交互式 shell 会话或将变量保持在本地的脚本。Bash 特定变量通常以 BASH_ 为前缀,例如 BASH_VERSION。
环境变量和 shell 变量具有相同的格式:
VAR_NAME=value
在使用 shell 和环境变量时,您必须牢记以下变量要求:
- 按照惯例,变量名总是大写的,例如 PATH。
- 区分大小写 - 可以使用小写字母。
- = 符号前后不应有空格。
- 始终用冒号 (:) 分隔多个值,例如 value1:value2:value3。
下表列出了一些最常见的环境变量。
变量的名称 |
描述 |
PATH |
Linux 在执行命令时搜索的以冒号分隔的目录列表。 |
USER |
当前登录用户的用户名。 |
HOME |
当前用户的主目录。 |
UID |
当前用户的唯一标识符。 |
EDITOR |
用于编辑文件的默认编辑器。 |
SHELL |
当前用户的 shell 的名称。 |
TERM |
当前终端仿真。 |
PWD |
当前工作目录。 |
TEMP |
临时目录的路径。 |
其中一些变量的值在每台 Linux 计算机上可能不同。
列出当前环境变量
Linux 有几个变量,了解它们的值非常重要,因为它们会影响系统的行为。有几个命令可用于列出 Linux 中的环境变量。
要打印所有环境变量的列表,请键入:
printenv
您还可以使用 env 命令列出所有 Linux 变量:
env
变量列表可能很长,因此难以阅读。您可以将 more 或 less 命令与 printenv 命令一起使用,一次一屏地列出环境变量:
printenv | more
上述所有命令一次列出多个变量。要查找有关指定变量的信息,请使用以下命令:
printenv HOME
此命令打印用户的主目录。
您也可以使用 echo 命令打印环境变量值。以下示例打印 PATH 环境变量的值:
echo $PATH
PATH 变量有多个值,它们用冒号分隔。
设置环境变量
Linux 提供了两种设置环境变量的方法。可以先设置一个shell变量,然后将shell变量导出为环境变量,第二种方式是直接导出环境变量。
要为当前 shell 会话创建新的环境变量并设置它们的值,请使用以下命令:
MYVAR=foo
此时,仅为 shell 创建新的环境变量。您可以使用 echo 命令确认是否设置了变量。此变量不是环境变量,如果您使用 printenv 命令,其输出将为空:
printenv MYVAR
现在我们可以使用 export 命令将此 shell 变量转换为单个环境变量:
export MYVAR
现在 MYVAR 是一个环境变量,这会影响当前 shell 以及从当前 shell 启动的所有进程。
您不必总是遵循这个漫长的过程来设置环境变量。您可以在单个命令中直接导出环境变量:
export MYENV=bar
您必须注意,通过这些命令设置的变量仅适用于当前会话。一旦关闭会话,这些变量就会丢失。要永久设置环境变量,您必须使用文本编辑器编辑 /etc/profile.d 目录、~/.bashrc、/etc/environment 或 /etc/profile 文件。
设置环境变量持久化
持久意味着当您关闭 shell 会话或重新启动时,您不需要重置环境变量的值。如果您希望环境变量可用于所有 shell 会话,甚至跨用户,那幺您必须在配置文件中添加环境变量。
使用/etc/environment文件为命令行和图形界面添加整个系统(即所有用户、所有进程)都可用的环境变量。该文件只接受 VAR_NAME="value" 格式的变量,不要使用导出。例如,使用您喜欢的编辑器打开 /etc/environment 文件,并使用以下格式添加环境变量:
VARIABLE_NAME=value
设置从当前用户注销并再次登录以进行更改后。
使用/etc/profile配置文件设置在启动登录 shell 时为所有用户自动加载的环境变量。使用 export 命令在用户配置文件中声明环境变量,如下所示:
export PATH=$PATH:/place/with/the/file
在~/.bashrc文件或~/.profile文件中设置一个用户特定的环境变量,使用如下:
export JAVA_HOME=/opt/jdk/11
export PATH="$JAVA_HOME/bin:$PATH"
运行source ~/.bashrcbash shell 命令以加载当前 shell 会话中的环境变量。
取消设置环境变量
使用 unset 命令取消设置或删除变量。
unset NAME
unset 命令删除使用终端命令导出的变量。但是,您存储在配置文件中的变量只会从当前 shell 会话中删除。当您创建一个新的终端会话时,它们会自动重新设置。
您可以通过从配置文件中删除变量来从 Linux 计算机中永久删除变量。
结论
我们学习了如何在 Linux 中列出和创建环境变量。我们还看到了如何通过编辑 bash 配置文件使变量在重启后保持不变。
环境变量是设置常用值的好方法,只需使用变量而不是一次又一次地手动输入值。本教程中列出的常用环境变量可用于场景 Linux 发行版,例如 Ubuntu、Debian、Redhat 。