介绍
Linux 环境变量是键值对,它们会影响系统上进程的运行方式。对于从初学者到高级管理员的所有 Linux 用户来说,了解如何管理这些变量至关重要。
在这个实验中,你将学习如何查看现有的环境变量、创建自己的临时变量、修改像 PATH 这样重要的系统变量,以及让你的更改在登录会话之间保持持久。这些技能是 Linux 环境管理的基础,将帮助你定制 Linux 使用体验并解决与环境相关的问题。
在这个实验结束时,你将具备有效管理 Linux 环境变量所需的命令和技术的实践经验。
查看环境变量
环境变量存储着可供系统和应用程序使用的信息。在这一步中,你将学习如何查看 Linux 系统上现有的环境变量。
首先,让我们为实验练习创建一个专用目录:
mkdir -p ~/project/env_lab
导航到这个目录:
cd ~/project/env_lab
现在,要查看当前所有已设置的环境变量,请使用 env 命令:
env
这个命令会显示当前会话中所有环境变量的列表。输出结果大致如下:
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
HOME=/home/labex
USER=labex
SHELL=/bin/zsh
...
每一行都显示一个变量名,后面跟着一个等号 (=),再后面是它的值。这些变量定义了环境的各个方面。
要查看特定的环境变量,你可以使用 echo 命令,并在变量名前加上美元符号 ($)。例如,要查看主目录变量的值:
echo $HOME
输出结果应该类似这样:
/home/labex
同样,要查看当前用户:
echo $USER
预期输出:
labex
设置临时环境变量
你可以为当前的 shell 会话临时设置环境变量。当你需要一个变量来完成特定任务,而又不想对系统进行永久性更改时,这种方法很有用。
要设置临时环境变量,请使用 export 命令,后面跟着变量名和值:
export TEST_VAR="Hello, Linux"
这将创建一个名为 TEST_VAR 的变量,其值为 "Hello, Linux"。要验证变量是否设置正确,请使用 echo 命令:
echo $TEST_VAR
你应该会看到:
Hello, Linux
你也可以一次性设置多个变量:
export VAR1="First" VAR2="Second"
验证这两个变量:
echo $VAR1
echo $VAR2
预期输出:
First
Second
要在所有环境变量中查看你新设置的变量,请运行:
env | grep VAR
这将过滤输出,只显示包含 "VAR" 的行,例如:
TEST_VAR=Hello, Linux
VAR1=First
VAR2=Second
请记住,通过这种方式创建的变量仅在当前 shell 会话中存在。如果你打开一个新的终端窗口或标签页,这些变量将不可用。
理解并修改 PATH 变量
PATH 环境变量是 Linux 中最重要的变量之一。它告诉系统在你输入命令时应该去哪里查找可执行文件。
首先,查看你当前的 PATH:
echo $PATH
你会看到一个以冒号分隔的目录列表,类似于:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
当你输入一个命令时,系统会按顺序搜索这些目录,直到找到匹配的可执行文件。
现在,让我们为自定义脚本创建一个新目录,并将其添加到 PATH 中:
mkdir -p ~/project/env_lab/bin
要将这个目录添加到 PATH 的开头,请使用:
export PATH=~/project/env_lab/bin:$PATH
这会将我们的新目录添加到现有 PATH 的前面。验证更改:
echo $PATH
现在,你的输出应该以新目录开头:
/home/labex/project/env_lab/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
让我们创建一个简单的脚本来测试修改后的 PATH:
cd ~/project/env_lab/bin
使用 nano 编辑器创建一个名为 hello 的文件:
nano hello
在文件中添加以下内容:
#!/bin/bash
echo "Hello from my custom script!"
按 Ctrl+O 保存文件,然后按 Enter,再按 Ctrl+X 退出。
使脚本可执行:
chmod +x hello
现在,从任何目录,你应该都可以直接输入脚本名称来运行它:
cd ~/project/env_lab
hello
你应该会看到:
Hello from my custom script!
这展示了 PATH 变量如何帮助系统找到可执行文件,以及你如何自定义它以包含自己的脚本目录。
在命令和脚本中使用环境变量
环境变量可以在命令和脚本中以多种方式使用。在这一步,你将学习如何有效地利用环境变量。
首先,让我们创建一个包含你名字的新环境变量:
export MY_NAME="Linux User"
你可以在命令中通过在变量前加 $ 来使用这个变量:
echo "Hello, $MY_NAME"
这应该会输出:
Hello, Linux User
环境变量也可以与其他命令一起使用。例如,让我们创建一个以该变量命名的目录:
mkdir -p ~/project/env_lab/$MY_NAME
验证目录是否已创建:
ls -la ~/project/env_lab/
你应该会在输出中看到一个名为 "Linux User" 的目录。
现在,让我们创建一个使用环境变量的简单脚本:
cd ~/project/env_lab
nano greet.sh
添加以下内容:
#!/bin/bash
## 使用现有的环境变量
echo "Hello, $MY_NAME"
echo "Your home directory is $HOME"
## 使用传递给脚本的变量
echo "The current time and date is $(date)"
## 创建一个局部变量
local_var="This is a local variable"
echo $local_var
## 从脚本中导出一个新变量
export GREETING="Have a nice day!"
echo $GREETING
按 Ctrl+O、Enter 保存并按 Ctrl+X 退出。
使脚本可执行:
chmod +x greet.sh
运行脚本:
./greet.sh
你会看到类似于以下的输出:
Hello, Linux User
Your home directory is /home/labex
The current time and date is Fri Aug 18 12:34:56 UTC 2023
This is a local variable
Have a nice day!
运行脚本后,检查 GREETING 变量是否存在于你的环境中:
echo $GREETING
你应该会看到:
Have a nice day!
这证实了从脚本中导出的变量会成为你 shell 环境的一部分,而脚本中的局部变量在脚本结束后不会保留。
使环境变量持久化
到目前为止,我们设置的所有环境变量在你关闭终端会话后都会丢失。在这一步,你将学习如何让环境变量在不同会话间保持持久。
在 Linux 中,像 .bashrc、.zshrc 或 .profile 这样的 shell 启动文件可用于设置持久的环境变量。由于我们的环境使用 zsh,所以我们将使用 .zshrc 文件。
首先,让我们打开 .zshrc 文件:
nano ~/.zshrc
移动到文件末尾(使用 Ctrl+End 或方向键)并添加以下行:
## 自定义环境变量
export PERSIST_VAR="This variable will persist"
export PATH=$HOME/project/env_lab/bin:$PATH
按 Ctrl+O、Enter 保存并按 Ctrl+X 退出。
若要不关闭并重新打开终端就能应用这些更改,请执行文件:
source ~/.zshrc
现在验证你的新变量是否已设置:
echo $PERSIST_VAR
你应该会看到:
This variable will persist
现在,即使你关闭并重新打开终端,这个变量仍然可用。
为了演示,让我们通过启动一个新的 shell 会话来模拟关闭并重新打开终端:
zsh
检查你的变量是否仍然可用:
echo $PERSIST_VAR
你应该仍然会看到:
This variable will persist
退出这个 shell 以返回到上一个会话:
exit
这种将环境变量添加到 shell 配置文件的方法可确保每次登录系统时这些变量都可用。
对于所有用户都应可用的系统级环境变量,管理员可以将它们添加到 /etc/profile.d/ 目录下的文件中,或者编辑 /etc/environment 文件。
总结
在这个实验中,你学习了在 Linux 中管理环境变量的基础知识,这些知识对于定制你的 Linux 使用体验以及控制应用程序的行为至关重要。
涵盖的关键概念包括:
- 使用
env命令查看环境变量,以及使用echo $VARIABLE_NAME显示特定变量 - 使用
export命令设置临时环境变量 - 理解并修改 PATH 变量,以控制 Linux 查找可执行程序的位置
- 在命令和脚本中使用环境变量,使你的代码更具灵活性
- 通过将环境变量添加到 shell 配置文件来使其持久化
这些技能构成了 Linux 环境管理的基础,并且适用于各种 Linux 发行版。理解环境变量对于从初学者到高级管理员和开发者的各级 Linux 用户都至关重要。
环境变量有助于你定制 shell 体验、控制应用程序行为并构建更灵活的脚本。随着你在 Linux 学习之路上不断前进,你会发现正确的环境管理对于软件开发、系统管理和故障排除等更复杂的任务变得越来越重要。



