Linux 环境管理

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Linux 环境变量是键值对,它们会影响系统上进程的运行方式。对于从初学者到高级管理员的所有 Linux 用户来说,了解如何管理这些变量至关重要。

在这个实验中,你将学习如何查看现有的环境变量、创建自己的临时变量、修改像 PATH 这样重要的系统变量,以及让你的更改在登录会话之间保持持久。这些技能是 Linux 环境管理的基础,将帮助你定制 Linux 使用体验并解决与环境相关的问题。

在这个实验结束时,你将具备有效管理 Linux 环境变量所需的命令和技术的实践经验。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/source("Script Executing") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/UserandGroupManagementGroup -.-> linux/env("Environment Managing") linux/UserandGroupManagementGroup -.-> linux/export("Variable Exporting") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/echo -.-> lab-271275{{"Linux 环境管理"}} linux/source -.-> lab-271275{{"Linux 环境管理"}} linux/chmod -.-> lab-271275{{"Linux 环境管理"}} linux/cd -.-> lab-271275{{"Linux 环境管理"}} linux/mkdir -.-> lab-271275{{"Linux 环境管理"}} linux/env -.-> lab-271275{{"Linux 环境管理"}} linux/export -.-> lab-271275{{"Linux 环境管理"}} linux/nano -.-> lab-271275{{"Linux 环境管理"}} end

查看环境变量

环境变量存储着可供系统和应用程序使用的信息。在这一步中,你将学习如何查看 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+OEnter 保存并按 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+OEnter 保存并按 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 学习之路上不断前进,你会发现正确的环境管理对于软件开发、系统管理和故障排除等更复杂的任务变得越来越重要。