设置永久环境变量
之前提到,我们可以将新的环境变量配置为临时的和永久的。
这可以通过 Linux 中的几个不同文件来将环境变量设置为永久的。
~/.bashrc
这个文件存在于用户的主目录中,将存储只能由相应用户使用的变量。
每当用户启动一个新的 shell 时,这些变量都会被重新加载。
/etc/profile
存储在这里的变量可以被每个用户访问,并且会在打开一个新的 shell 时加载。
/etc/environment
存储在这里的变量可以在系统范围内访问。
示例
在 ~/.bashrc
和/etc/profile中, 使用下面语法添加设置新环境变量:
$ export VARIABLE=’VARIABLENAME’
运行此命令后,我们可以使用下面示例中显示的命令将编辑过的文件重新加载到当前会话中。
$ source ~/ .bashrc OR # source /etc/profile
另一件需要注意的事情是,如果你在 /etc/environment
配置文件中放置了一个新的环境变量,你不需要键入 export
命令。
语法示例如下所示。
$ VARIABLE='VARIABLENAME'
我们还可以使用 echo
命令来打印 shell 变量。
$ echo $HOME
环境变量功能
环境变量可用于自定义系统运行的方式。
它们还可用于修改告诉系统上的应用程序如何运行的代码。
例如,许多系统应用程序和用户制作的脚本需要访问当前用户的主目录。
我们可以通过使用HOME环境来实现这一点。将HOME用于用户制作的脚本将允许系统上的任何用户运行该脚本。
$ echo My home directory is $HOME > $HOME/info.log
$ cat $HOME/info.log My home directory is /home/nick
删除环境变量
在 Linux 终端中使用 unset
命令来删除变量。
$ unset VARIABLE
设置临时环境变量
以下命令是如何创建临时环境变量的示例,该变量在用户注销、新 shell 或者重新启动系统后不会保留。
创建一个名为“VARIABLE”的变量。
$ VARIABLE='VARIABLENAME'
要在 Linux 终端中设置 shell 变量,我们需要使用 export
命令。
$ export VARIABLE
或者将两个命令合并在一起:
$ export VARIABLE='VARIABLENAME'
获取环境变量
printenv
命令是在 Linux 上列出所有环境变量的一种方式。
$ printenv
列出特定变量的语法如下所示。
$ printenv SHELL
我们还可以使用 printenv
同时列出多个特定变量。
$ printenv SHELL USER
最常见的环境变量之一是 $PATH 变量。
$PATH 变量允许用户指定一个目录,当我们执行命令时,Bash shell 应在该目录中搜索应用程序。
$ printenv PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
常见环境变量
环境变量是一组包含在每个 Linux 系统中的不断变化的值。
环境变量由脚本和应用程序在各种场景中使用。
Linux 操作系统中存在着种类繁多的环境变量。
Linux 最常见的环境变量:
- USER - 此环境变量是 Linux 系统上当前登录的用户。
- HOME - 此环境变量是 Linux 系统上当前用户的主目录。
- EDITOR - 此环境变量是用于在 Linux 终端中编辑 .txt 文件的默认编辑器。这允许程序确定我们更喜欢使用哪个文本编辑器来编辑 Linux 应用程序。
- SHELL - 这个环境变量是当前用户的 shell 的路径。在 Linux 系统上可以使用许多不同的 shell。最常见的几个是 Bash 和 ZSH。 shell 用于解释我们输入的命令,语法和命令将根据我们使用的命令而变化。对于几乎每个 Linux 操作系统发行版,Bash 都是默认的,也是迄今为止最受欢迎的。
- LOGNAME - 这个环境变量只是当前用户的名字。
- PATH - 包含冒号 (:),此环境变量是执行命令时将搜索的目录列表。当一个命令在系统上运行时,它会按照文件路径的指定顺序搜索那些目录。系统将继续搜索这些目录,直到找到它可以执行的第一个命令。否则,我们将在终端中收到一条错误消息,内容为“未找到命令”。
- LANG - 此环境变量是当前的语言环境设置。
- TERM - 此环境变量是终端仿真。
- MAIL - 此环境变量将存储当前用户的邮件。
还需要注意变量区分大小写。