如何在 Linux 中打印环境变量

环境变量特定于某些环境。 一个通用的答案,对吧?

但实际上,这些是特定于您当前系统环境的变量,例如当前登录的用户将存储在“USER”变量中。

还在迷茫吗? 不用担心。 我将引导您简要了解环境变量,然后跳转到各种打印它们的方法。

什么是环境变量?

不,它与您的桌面环境无关。

您每天遇到的最基本的环境变量之一是主机名。 所以你有没有想过为什么它总是全部大写?

因为大部分环境变量都是系统预定义的,并且是全局变量,所以你会遇到经常用大写字母写的。

那么为什么首先使用环境变量呢?

假设您是一名程序员,并且您的代码需要访问您的数据库密钥,而该密钥永远不应公开共享。

那么在 Git 上共享整个代码时,您有哪些选择? 将数据库密钥包装到环境变量中。

这样,您可以在 Git 上将指令设置为“如果要使此代码正常工作,请将此变量与您的数据库密钥互换”。

当然,这是使用环境变量的一种方式。 那么让我们来看看Linux中一些常见的环境变量。

环境变量描述
显示当前用户的主目录
主机名包含系统的主机名
用户标识符存储用户的唯一 ID
显示当前正在使用的 shell 的路径
BASH_VERSION包含当前使用的版本 bash 实例
历史文件保存命令历史的文件路径
学期显示您正在使用的登录终端类型
小路显示命令和目录的路径由列分隔

有多种方法可以在 Linux 中打印环境变量,我将尝试介绍其中的每一种。 所以让我们从最简单的开始。

使用 printenev 命令

printenv 实用程序用于打印当前 shell 的环境变量。

假设我想使用打印 USERNAME 的值 printenv 所以我的命令如下:

printenv USERNAME
使用 printenv 打印 USERNAME

同样,您也可以使用 printenv 实用程序打印多个环境变量,方法是用 分隔它们。

那么如何使用 printenv 一次打印 HOME 和 USERNAME 的值呢?

printenv HOME USERNAME

首先,它将打印当前登录用户的主目录,并在第二行中显示主机名。

使用 printenv 打印 HOME 和 USERNAME

但是,如果您正在寻找一种可以打印当前 shell 中可用的每个环境变量的方法呢?

您可以通过执行不带任何选项或参数的 printenv 命令轻松完成此操作。

printenv
利用 printenv 命令打印当前 shell 中可用的每个环境变量

使用 echo 命令

如果您已经使用 Linux 一段时间,使用此方法打印环境变量的机会非常高(即使您不知道它不是环境变量)。

现在,让我向您展示您应该如何使用 echo 打印 USERNAME 的值:

echo $USERNAME
使用 echo 命令打印环境变量使用 echo 命令打印环境变量

但是如果你想使用 echo 打印多个环境变量呢? 只需遵循给定的语法:

echo -e "$<variable 1> n<variable 2> n<variable 3>"

那么如何使用 echo 一次打印 HOME、USERNAME 和 HOSTNAME 的值呢?

echo -e "$USERNAME n$HOME n$HOSTNAME"
使用 echo 命令打印环境变量的多个值使用 echo 打印 HOME、USERNAME 和 HOSTNAME 的值

使用 env 命令

shell 脚本通常使用 env 命令来启动正确的解释器,但您也可以使用 env 命令列出可用的环境变量。

env 命令如果不带任何参数和选项应用,将打印所有可用的环境变量。

env
使用 env 命令打印环境变量使用 env 命令打印每个可用的环境变量

但是如果你想获取特定环境变量的值怎么办? 您可以使用 grep 命令轻松过滤结果。

为了演示,我将使用 echo 命令打印出 HOME 的值:

env | grep HOME
使用 env 命令打印环境变量使用 env 命令打印 HOME 环境变量

使用声明命令

declare 命令用于在 shell 中声明和打印变量的值。

像任何其他人一样 example 如上所示,您可以使用不带任何参数的声明,并会带来可用变量的列表。

declare
使用 declare 命令打印环境变量使用不带任何参数的 declare 命令打印可用的环境变量

之前,我向您展示了如何使用 grep 命令过滤结果,但是如果您想过滤多个结果怎么办?

首先,让我们看一下过滤多个环境变量的语法:

declare | grep '<variable 1>|<variable 2>|<variable 3>'

为了 example,让我们打印 HOSTNAME 和 USERNAME 的值:

declare | grep 'HOSTNAME|USERNAME'
使用 grep 和 declare 打印多个环境变量使用带有声明的grep打印多个环境变量

使用 set 命令

通常,set 命令用于在 shell 中设置和取消设置标志,以便您确定即将到来的进程的确切行为。

但您也可以使用 set 命令打印当前 shell 的环境变量。

要打印每个环境变量,请使用给定的命令:

set
使用 set 命令打印环境变量使用 set 命令打印可用的环境变量

您可以使用与上述方法相同的方法来过滤来自 set 命令的结果。

不过还是让我们看一个简单的 example 使用 grep 命令打印多个环境变量。

set | grep 'HISTFILESIZE|HISTFILE|GNOME_SHELL_SESSION_MODE'
使用 set commad 打印特定的环境变量使用带有grep的set命令过滤和打印多个环境变量

总结

尽管有多种打印环境变量的方法,但我强烈建议您使用第一种方法,该方法的语法在过滤特定变量方面最不复杂。

如果您仍然感到困惑,评论部分对您开放。