环境变量是保存在机器内部的动态指定值的集合,在Ubuntu和Linux平台中,在终端或子壳中运行的程序已经利用了环境变量。环境变量,在基本术语中,是一个具有标题和值的属性。环境变量涉及到改变系统的功能方式以及设备程序的行为。环境变量可以保存数据,如常规的文字处理器或搜索引擎、可执行文件的路径、机器的地域性以及键盘布局偏好等等。
设置环境变量值
你需要明白,环境变量的初始化与编程语言中其他变量的初始化相同,即bash变量。虽然,环境变量的标题总是区分大小写的,也就是说,它必须是大写的。使用冒号": "可以给一个环境变量分配两个以上的值。
下面是一个简单的初始化环境变量的一般语法。set内置命令已被广泛用于设置环境变量的值。如果你在没有任何参数或任何set标志的情况下使用它,它将使你的shell显示所有的环境变量,你可以从下面的图片中看到。内置 "set "的常见例子有:"set -x "用于展开和显示,"set -e "用于在遇到任何非零状态时退出程序,"set -u "和 "set -o "用于在发现没有设定值的变量时显示错误,"set -n "用于避免执行命令等等。
- KEY=value
- KEY=value1:value2
$ set

使用环境打印所有环境变量
让我们开始使用shell中的不同命令来打印环境变量。在此之前,使用Ubuntu 20.04桌面上的 "Ctrl+Alt+T "启动你的控制台应用程序。显示所有环境变量的第一个方法是使用shell中的 "env "命令。但是,它只能显示当前系统的活动环境变量。
你也可以在其中传递一些参数来修改输出。我们使用简单的 "env "命令来显示我们shell中的所有当前环境变量,如图所示的输出。
$ env

使用printenv打印所有环境变量
让我们看看另一个例子来打印shell中的所有环境变量。这一次我们使用shell中的 "printenv "命令来做这件事。printenv "命令显示当前活动的环境变量和shell中先前指定的环境变量。
你可以看到使用 "printenv "命令来显示shell中所有环境变量的输出,如下图所示。我们有很多环境变量以及它们的分配值,即shell变量、显示变量、认证变量,以及更多,如图所示。
$ printenv

你也可以用同样的命令,加上关键词 "more "和 "less"。当你想在需要时看到更多的命令时,更多的命令会很有帮助。而少的命令将自动在你的shell屏幕上显示较少的环境变量,以避免不便之处。更多和更少显示的命令说明如下。
$ printenv | more

打印环境变量的 "more "命令输出的更清晰视图如下图所示。点 "Enter "键可以探索更多的变量。

printenv命令在将其变量数据转移到其他文件时非常方便。这意味着我们也可以使用 "printenv "命令将所有的环境变量和它们的值转移到一些bash文件。你必须在 "printenv "关键字后面使用大于号,同时还要加上存储变量数据的文件名。
这样做之后,你可以看到该文件将有所有的环境变量。在shell中使用 "cat "命令和 "printenv "命令显示文件的内容,输出结果是一样的。
$ printenv > new.sh
$ cat new.sh

另一方面,你也可以使用 "printenv "命令中的参数来使其具体化。比方说,如果你想在shell中检查环境变量 "HOME "的值,你必须在 "printenv "命令中用 "grep "关键字提到它。如果系统中存在名为 "HOME "的变量,它将在shell上显示。正如你所看到的,它显示了 "HOME "变量和它的值,即shell中的路径。
$ printenv | grep HOME

让我们来检查一些其他的环境变量。比方说,用 "grep "关键字检查文件夹 "tmp"。在我们的系统中,文件夹 "tmp "属于变量 "SESSION_MANAGER"。
$ printenv | grep tmp

现在,让我们检查一下系统中广泛使用的 "bin "文件夹。运行该命令后,我们得到了4个环境变量的回报,表明它是Ubuntu 20.04系统中所有这些环境变量的一部分。
$ printenv | grep bin

要检查系统中根本不存在的变量,会导致一个空的结果。因为系统中没有文件夹或文件 "new "的环境变量。
$ printenv | grep new

你也可以使用另一个命令来显示在你的系统中发现的所有变量,也就是说,不仅仅是环境变量。declare命令可以与查询中的"-p "标志一起用于这一目的。
$ declare -p

如果你只想在你的shell中显示环境变量,你也可以通过声明命令来做到这一点。你必须声明"-xp "标志而不是"-p "标志,如图所示。你可以看一下只显示环境变量的输出。
$ declare -xp

结语
本指南是为Linux系统的所有bash用户设计的,尽管他们有学习能力。这是因为本文中的所有例子都非常简单,而且解释得很清楚,使每一类用户都能理解。