简介
Linux 环境变量是键值对,它们会影响系统上进程的运行方式。对于从初学者到高级管理员的所有 Linux 用户来说,了解如何管理这些变量至关重要。
在这个实验中,你将学习如何查看现有的环境变量、创建自己的临时变量、修改像 PATH 这样重要的系统变量,以及让你的更改在登录会话之间保持持久。这些技能是 Linux 环境管理的基础,将帮助你定制 Linux 使用体验并解决与环境相关的问题。
在这个实验结束时,你将具备有效管理 Linux 环境变量所需的命令和技术的实践经验。
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
环境变量是 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
命令设置临时环境变量这些技能构成了 Linux 环境管理的基础,并且适用于各种 Linux 发行版。理解环境变量对于从初学者到高级管理员和开发者的各级 Linux 用户都至关重要。
环境变量有助于你定制 shell 体验、控制应用程序行为并构建更灵活的脚本。随着你在 Linux 学习之路上不断前进,你会发现正确的环境管理对于软件开发、系统管理和故障排除等更复杂的任务变得越来越重要。