在本教程中,我们将学习如何在 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 进程。 我们将替换上面路径中的
cat /proc/26513/environ | tr ' ' 'n'
为了让这个输出看起来更好一点,我们可以替换默认的分隔符 0 在 tr 的帮助下换行 (n)
cat /proc/26513/environ | tr ' ' 'n'
列出环境变量的命令
您可以使用三个命令列出全局和本地环境变量。
- 打印环境
- 环境
- 放
这 环境 和 打印环境 命令,当不带选项使用时,只会输出相同的活动环境变量集。 这两个命令都可以访问当前活动的 shell 传递给它们的环境变量。
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 中设置环境变量的方式,您可以将变量添加到以下文件之一。
全系统
/etc/environment
/etc/profile
和/etc/profile.d/*
/etc/bash.bashrc
用户会话
~/.pam_environment
~/.xprofile
~/.profile
,~/.bash_profile
,~/.bash_login
~/.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
结论
如果你已经完成了,你应该对变量的工作原理、它们的位置以及如何在 Linux 中管理、修改、添加和设置环境变量有一个完美的理解。 是的,当有疑问时, 手册页 将解释命令可以做的一切。