Linux 操作系统广泛用于服务器,以承载复杂的应用程序,这些应用程序具有非常具体的系统设置。当您启动一个新的 Linux shell 会话时,会读取某个系统配置并相应地设置您的计算机。这些配置和设置由环境变量控制。
我们将了解如何在 Linux 系统中列出和设置环境变量。
目录
(资料图片)
先决条件Linux中的环境变量是什么列出当前环境变量设置环境变量设置环境变量持久化取消设置环境变量结论主要分享低代码、微服务、容器化、SAAS、系统架构方面的的内容,希望大家点赞,评论,关注。
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/11export PATH="$JAVA_HOME/bin:$PATH"
运行source ~/.bashrcbash shell 命令以加载当前 shell 会话中的环境变量。
使用 unset 命令取消设置或删除变量。
unset NAME
unset 命令删除使用终端命令导出的变量。但是,您存储在配置文件中的变量只会从当前 shell 会话中删除。当您创建一个新的终端会话时,它们会自动重新设置。
您可以通过从配置文件中删除变量来从 Linux 计算机中永久删除变量。
我们学习了如何在 Linux 中列出和创建环境变量。我们还看到了如何通过编辑 bash 配置文件使变量在重启后保持不变。
环境变量是设置常用值的好方法,只需使用变量而不是一次又一次地手动输入值。本教程中列出的常用环境变量可用于场景 Linux 发行版,例如 Ubuntu、Debian、Redhat 。
主要分享低代码、微服务、容器化、SAAS、系统架构方面的的内容,希望大家点赞,评论,关注。