如何在 Linux 中设置环境变量

在本教程中,我们将学习如何在 Linux 中手动设置环境变量。 使用 Linux 时,内核会为我们需要使用的许多变量设置默认值。 这包括默认路径、语言、默认 shell、主目录等。 让我们回顾一下 Linux 存储这些变量的方式和位置,以及我们如何管理、编辑和使用它们。

环境变量在 Linux 中的位置?

环境变量不存储在某个文件中,而是在进程运行时存在。 变量存储在进程的虚拟内存和虚拟文件中 /proc//environ.

此文件显示调用进程时传递的所有环境变量。 内核通过这个虚拟文件使这些虚拟环境可见。

让我们运行 ps 命令 并查看哪些进程正在积极运行。

[email protected]:~# ps   PID TTY          TIME CMD 26513 pts/0    00:00:00 bash 27943 pts/0    00:00:00 bash 28024 pts/0    00:00:00 ps 

如您所见,我们有两个 bash 进程和我们刚刚运行的 ps 进程。 我们将替换上面路径中的 以查看哪些默认环境变量用于 bash 过程。 ProcessID 位于第一列 (PID – 26513)

cat /proc/26513/environ | tr ' ' 'n' 
Bash 环境变量输出

为了让这个输出看起来更好一点,我们可以替换默认的分隔符 0 在 tr 的帮助下换行 (n)

cat /proc/26513/environ | tr ' ' 'n' 
Bash 环境变量输出美化

列出环境变量的命令

您可以使用三个命令列出全局和本地环境变量。

  • 打印环境
  • 环境

环境打印环境 命令,当不带选项使用时,只会输出相同的活动环境变量集。 这两个命令都可以访问当前活动的 shell 传递给它们的环境变量。

Printenv 输出Printenv 命令输出
环境输出环境命令输出

set 命令是 shell 内置的,可以查看 shell 局部变量,包括 shell 函数。 因此,您最终会看到使用 set 命令比使用 printenv 或 env 命令更多的环境变量。

设置命令输出设置命令输出

在 Linux 中设置环境变量

现在我们知道了环境变量在哪里,它们是什么,让我们学习在 Linux 中修改、设置环境变量或向现有环境变量添加新数据。 程序员最常使用的环境变量是设置默认路径。 让我们先从那个开始。

1.如何添加或更改PATH环境变量

我们将使用“”命令导出环境变量,这将让我们在临时内存中设置变量。

[email protected]:~# echo $PATH 
输出路径环境变量输出路径环境变量

如果我们想向默认路径添加一个新变量,我们将使用 命令。 但请记住, 出口 命令将覆盖现有路径。 所以我们还需要添加 $PATH 变量,同时避免丢失现有的默认值。 让我们看一个例子,如果我们使用要添加的路径直接导出会发生什么。

[email protected]:~#  PATH=/home/ [email protected]:~# echo $PATH 

上面将输出新的 PATH 变量,它只有 /home/ 作为默认路径。

导出路径变量覆盖导出路径变量覆盖

为避免这种情况,我们将在导出时添加 $PATH 变量。

[email protected]:~#  PATH=$PATH:/home/ [email protected]:~# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/go/bin:/home/ 
导出路径变量而不覆盖导出路径变量而不覆盖

如您所见,这里的 PATH 变量没有被覆盖,因为我们还将 $PATH 传递给了导出命令。 这更常与 PATH 命令一起使用,但不限于此。 您也可以设置和创建自己的变量。

[email protected]:~# printenv | grep HowLinux  [email protected]:~#  HowLinux="Everything you need to learn about Linux"  [email protected]:~# printenv | grep HowLinux HowLinux=Everything you need to learn about Linux 
创建自己的环境变量创建自己的环境变量

当我们第一次输出 printenv 命令并尝试使用 grep 查找 HowLinux 时,我们一无所获。 但是导出后,我们可以看到环境变量已经添加到列表中。

2. 如何在 Linux 中设置环境变量在重启后保持不变

根据您希望在 Linux 中设置环境变量的方式,您可以将变量添加到以下文件之一。

全系统

  1. /etc/environment
  2. /etc/profile/etc/profile.d/*
  3. /etc/bash.bashrc

用户会话

  1. ~/.pam_environment
  2. ~/.xprofile
  3. ~/.profile, ~/.bash_profile, ~/.bash_login
  4. ~/.bashrc

例如,如果您希望 PATH 可以在系统范围内访问而不管谁登录,您可以将路径添加到 /etc/environment 文件。 如果您希望范围仅限于当前用户,您可以使用 ~/.profile. 您还可以将变量添加到特定于 shell 的文件中,例如 ~/.bashrc 这会将变量的范围限制为用户和外壳。 这 /etc/bash.bashrc Ubuntu 中的文件将范围限制在 shell 中,而与用户无关。

3.如何为当前会话添加变量并立即更新它们

使用导出命令时,环境变量立即显示效果。 但是,当您在 Linux 中将环境变量设置为持久性时,该文件不会被执行,因此在文件运行之前这些变量不会存在于系统中。

每次您登录或重新启动系统时都会运行该文件。 但是,如果您不想重新启动甚至退出系统怎么办? 这可以通过使用 source Linux 中的命令。

对于本教程,让我们在 ~/.profile 文件中设置一个示例变量。 如果您还没有此文件,您可以创建它。 在我的例子中,我的主目录中没有这个文件,所以我将使用 touch 命令来创建它。

[email protected]:~# touch ~/.profile 

我将在 ~/.profile 文件中创建一个名为 Tutorial 的示例环境变量。 添加一行 Tutorial="test" 在 .profile 文件中。 添加该行并保存文件后,运行 source 命令,如下所示。

[email protected]:~# source ~/.profile 
源命令更新环境变量 1源命令更新环境变量 1

结论

如果你已经完成了,你应该对变量的工作原理、它们的位置以及如何在 Linux 中管理、修改、添加和设置环境变量有一个完美的理解。 是的,当有疑问时, 手册页 将解释命令可以做的一切。