环境变量特定于某些环境。 一个通用的答案,对吧?
但实际上,这些是特定于您当前系统环境的变量,例如当前登录的用户将存储在“USER”变量中。
还在迷茫吗? 不用担心。 我将引导您简要了解环境变量,然后跳转到各种打印它们的方法。
什么是环境变量?
不,它与您的桌面环境无关。
您每天遇到的最基本的环境变量之一是主机名。 所以你有没有想过为什么它总是全部大写?
因为大部分环境变量都是系统预定义的,并且是全局变量,所以你会遇到经常用大写字母写的。
那么为什么首先使用环境变量呢?
假设您是一名程序员,并且您的代码需要访问您的数据库密钥,而该密钥永远不应公开共享。
那么在 Git 上共享整个代码时,您有哪些选择? 将数据库密钥包装到环境变量中。
这样,您可以在 Git 上将指令设置为“如果要使此代码正常工作,请将此变量与您的数据库密钥互换”。
当然,这是使用环境变量的一种方式。 那么让我们来看看Linux中一些常见的环境变量。
环境变量 | 描述 |
---|---|
家 | 显示当前用户的主目录 |
主机名 | 包含系统的主机名 |
用户标识符 | 存储用户的唯一 ID |
壳 | 显示当前正在使用的 shell 的路径 |
BASH_VERSION | 包含当前使用的版本 bash 实例 |
历史文件 | 保存命令历史的文件路径 |
学期 | 显示您正在使用的登录终端类型 |
小路 | 显示命令和目录的路径由列分隔 |
在 Linux 中打印环境变量
有多种方法可以在 Linux 中打印环境变量,我将尝试介绍其中的每一种。 所以让我们从最简单的开始。
使用 printenev 命令
printenv 实用程序用于打印当前 shell 的环境变量。
假设我想使用打印 USERNAME 的值 printenv
所以我的命令如下:
printenv USERNAME
同样,您也可以使用 printenv 实用程序打印多个环境变量,方法是用
那么如何使用 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 命令
shell 脚本通常使用 env 命令来启动正确的解释器,但您也可以使用 env 命令列出可用的环境变量。
env 命令如果不带任何参数和选项应用,将打印所有可用的环境变量。
env

但是如果你想获取特定环境变量的值怎么办? 您可以使用 grep 命令轻松过滤结果。
为了演示,我将使用 echo 命令打印出 HOME 的值:
env | grep HOME

使用声明命令
declare 命令用于在 shell 中声明和打印变量的值。
像任何其他人一样 example 如上所示,您可以使用不带任何参数的声明,并会带来可用变量的列表。
declare

之前,我向您展示了如何使用 grep 命令过滤结果,但是如果您想过滤多个结果怎么办?
首先,让我们看一下过滤多个环境变量的语法:
declare | grep '<variable 1>|<variable 2>|<variable 3>'
为了 example,让我们打印 HOSTNAME 和 USERNAME 的值:
declare | grep 'HOSTNAME|USERNAME'

使用 set 命令
通常,set 命令用于在 shell 中设置和取消设置标志,以便您确定即将到来的进程的确切行为。
但您也可以使用 set 命令打印当前 shell 的环境变量。
要打印每个环境变量,请使用给定的命令:
set

您可以使用与上述方法相同的方法来过滤来自 set 命令的结果。
不过还是让我们看一个简单的 example 使用 grep 命令打印多个环境变量。
set | grep 'HISTFILESIZE|HISTFILE|GNOME_SHELL_SESSION_MODE'

总结
尽管有多种打印环境变量的方法,但我强烈建议您使用第一种方法,该方法的语法在过滤特定变量方面最不复杂。
如果您仍然感到困惑,评论部分对您开放。