如何在 Linux 中打印环境变量
环境变量特定于某些环境。这是一个通用答案,对吧?
但实际上,这些只是特定于您当前系统环境的变量,例如当前登录的用户将存储在“USER”变量中。
仍然感到困惑?别担心。我将带您简要了解环境变量,然后介绍打印它们的各种方法。
什么是环境变量?
不,它与您的桌面环境无关。
您每天遇到的最基本的环境变量之一是主机名。那么,您是否想过为什么它总是用大写字母书写?
因为大多数环境变量都是由系统预先定义的,并且是全局变量,所以你经常会遇到大写的它们。
那么为什么首先要使用环境变量呢?
假设您是一名程序员,并且您的代码需要访问您的数据库密钥,而该密钥永远不应公开共享。
那么在 Git 上共享整个代码时你有什么选择?将数据库密钥包装到环境变量中。
这样,您就可以在 Git 上设置指令为“如果您想让此代码工作,请将此变量与您的数据库密钥交换。”
当然,这只是使用环境变量的一种方式。下面我们来看看 Linux 中一些常见的环境变量。
环境变量 | 描述 |
---|---|
家 | 显示当前用户的主目录 |
主机名 | 包含系统的主机名 |
唯一标识 | 存储用户的唯一 ID |
壳 | 显示当前正在使用的 shell 的路径 |
BASH_VERSION | 包含当前使用的 bash 实例的版本 |
历史文件 | 保存命令历史记录的文件路径 |
学期 | 显示您正在使用的登录终端的类型 |
小路 | 显示命令路径,目录以列分隔 |
在 Linux 中打印环境变量
在 Linux 中,有多种方法可以打印环境变量,我将尝试介绍每种方法。因此,让我们从最简单的方法开始。
使用 printenev 命令
printenv 实用程序用于打印当前 shell 的环境变量。
假设我想使用打印 USERNAME 的值printenv
,那么我的命令如下:
printenv USERNAME
类似地,您也可以使用 printenv 实用程序来打印多个环境变量,并用 <space> 分隔它们。
那么如何使用 printenv 同时打印 HOME 和 USERNAME 的值呢?
printenv HOME USERNAME
首先,它将打印当前登录用户的主目录,第二行将显示主机名。
但是如果您正在寻找一种方法来打印当前 shell 中可用的每个环境变量怎么办?
您可以通过执行 printenv 命令(不带任何选项或参数)轻松实现此目的。
printenv
使用 echo 命令
如果您已经使用 Linux 一段时间,那么使用此方法打印环境变量的可能性相当高(即使您不知道它不是一个环境变量)。
现在,让我向您展示如何使用 echo 打印 USERNAME 的值:
echo $USERNAME
但是如果你想使用 echo 打印多个环境变量怎么办?只需遵循给定的语法:
echo -e "$<variable 1> \n<variable 2> \n<variable 3>"
那么如何使用 echo 一次打印 HOME、USERNAME 和 HOSTNAME 的值呢?
echo -e "$USERNAME \n$HOME \n$HOSTNAME"
使用 env 命令
env 命令通常由 shell 脚本用来启动正确的解释器,但您也可以使用 env 命令列出可用的环境变量。
如果使用 env 命令时不带任何参数和选项,则会打印所有可用的环境变量。
env
但是如果您想获取特定环境变量的值怎么办?您可以使用 grep 命令轻松地过滤结果。
为了演示,我将使用 echo 命令打印出 HOME 的值:
env | grep HOME
使用declare命令
declared 命令用于在 shell 中声明和打印变量的值。
与上面显示的任何其他示例一样,您可以使用不带任何参数的 declared 并将带来可用变量列表。
declare
之前,我向您展示了如何使用 grep 命令来过滤结果,但是如果您想过滤多个结果怎么办?
首先,让我们看一下过滤多个环境变量的语法:
declare | grep '<variable 1>\|<variable 2>\|<variable 3>'
例如,让我们打印 HOSTNAME 和 USERNAME 的值:
declare | grep 'HOSTNAME\|USERNAME'
使用 set 命令
通常,set 命令用于设置和取消设置 shell 中的标志,以便您确定即将发生的进程的确切行为。
但是您也可以使用 set 命令来打印当前 shell 的环境变量。
要打印每个环境变量,请使用给定的命令:
set
您可以使用与上述方法相同的方法来过滤来自 set 命令的结果。
但是,让我们仍然看一个使用 grep 命令打印多个环境变量的简单示例。
set | grep 'HISTFILESIZE\|HISTFILE\|GNOME_SHELL_SESSION_MODE'
总结
虽然有多种打印环境变量的方法,但我强烈建议您使用第一种方法,因为在过滤特定变量方面,语法是最不复杂的。
如果您仍然感到困惑,可以在评论区留言。