介绍
在这个实验中,你将学习如何确定 Linux 环境中当前正在使用的 shell。你将探索不同的方法来检查活动的 shell,包括使用 echo $SHELL 命令显示当前会话的 shell,检查 /etc/passwd 文件以验证用户的默认登录 shell,以及使用 ps 命令检查正在运行的进程以识别 shell 进程。
通过完成这些步骤,你将获得识别和理解 shell 环境的实用技能,这对于在 Linux 中进行有效的命令行交互和脚本编写至关重要。
使用 echo $SHELL 检查当前 shell
在这一步中,你将学习如何识别你在终端中当前使用的 shell。shell 是处理你输入命令的命令行解释器。不同的 shell 具有不同的特性和语法,尽管许多基本命令在它们之间的工作方式是相同的。
LabEx 环境默认使用 zsh 作为 shell。你可以通过检查 $SHELL 环境变量的值来验证这一点。环境变量是影响计算机上进程行为的动态值。$SHELL 变量专门存储用户默认 shell 的路径。
要显示 $SHELL 变量的值,请使用 echo 命令,后跟前缀为美元符号 ($) 的变量名。
在你的终端中输入以下命令并按回车键:
echo $SHELL
你应该会看到类似以下的输出,表明你当前使用的 shell 是 zsh:
/usr/bin/zsh
这证实了终端当前正在运行 zsh shell,这是你 LabEx 环境的默认配置。了解你正在使用的 shell 很重要,因为在你学习 Linux 的过程中,一些高级特性或脚本可能特定于某个 shell。
点击 继续 进入下一步。
在 /etc/passwd 中验证用户 shell
在上一步中,你使用 echo $SHELL 查看了你当前使用的 shell。这是为你当前终端会话启动的 shell。然而,系统还会在一个配置文件中记录每个用户的 默认 登录 shell。
这个配置文件是 /etc/passwd,它包含了系统上所有用户的信息。/etc/passwd 中的每一行代表一个用户账户,并且被冒号 (:) 分隔成多个字段。每行的最后一个字段指定了用户的默认登录 shell。
要查看 /etc/passwd 的内容,你可以使用 cat 命令。由于我们只对 labex 用户的那一行感兴趣,我们可以将 cat 与 grep 命令结合使用来过滤输出。grep 是一个用于在文件中搜索文本模式的强大工具。
在你的终端中输入以下命令并按回车键:
cat /etc/passwd | grep labex
让我们来分解一下这个命令:
cat /etc/passwd:此命令读取/etc/passwd文件的内容并将其打印到标准输出。|:这是一个管道符号。它将左边命令 (cat /etc/passwd) 的输出作为输入传递给右边的命令 (grep labex)。grep labex:此命令在接收到的输入中搜索包含字符串 "labex" 的行,并打印这些行。
你应该会看到类似以下的单行输出:
labex:x:5000:5000:LabEx user,,,:/home/labex:/usr/bin/zsh
这一行包含了关于 labex 用户的几条信息,由冒号分隔。这些字段(按顺序)分别是:
- 用户名 (
labex) - 密码(用
x表示,实际的密码哈希出于安全考虑存储在其他地方) - 用户 ID (UID) (
5000) - 组 ID (GID) (
5000) - 用户信息 (GECOS 字段) (
LabEx user,,,) - 主目录 (
/home/labex) - 默认登录 shell (
/usr/bin/zsh)
最后一个字段 /usr/bin/zsh 证实了 labex 用户的默认登录 shell 确实是 zsh,这与你使用 echo $SHELL 看到的结果一致。
点击 继续 以继续。
使用 ps 命令检查 shell 进程
在前面的步骤中,你使用 echo $SHELL 识别了当前的 shell,并在 /etc/passwd 中验证了默认登录 shell。现在,让我们查看系统上正在运行的进程,以了解 shell 进程本身。
在 Linux 中,每个正在运行的程序都是一个进程。ps 命令(“process status”的缩写)用于查看当前正在运行的进程的信息。
要查看与你当前终端会话相关的进程,你可以使用带有 -f 选项的 ps 命令,该选项会提供完整格式的列表。
在你的终端中输入以下命令并按回车键:
ps -f
你应该会看到类似以下的输出:
UID PID PPID C STIME TTY TIME CMD
labex XXXX XXXX 0 HH:MM pts/0 00:00:00 zsh
labex YYYY XXXX 0 HH:MM pts/0 00:00:00 ps -f
让我们来看看这些列的含义:
UID:进程所有者的用户 ID (labex)。PID:进程 ID,每个进程的唯一编号。PPID:父进程 ID。这是启动此进程的进程的 PID。C:CPU 利用率。STIME:进程启动的时间。TTY:与进程关联的终端 (pts/0表示伪终端,就像你正在使用的这个)。TIME:进程累积使用的 CPU 时间。CMD:启动该进程的命令。
在输出中,你应该会看到一行 CMD 为 zsh 的记录。这一行代表正在运行你当前终端会话的 zsh shell 进程。你还会看到 ps -f 命令本身的一行记录,因为在你执行它时,它也是一个正在运行的进程。
这一步向你展示了如何使用 ps 检查正在运行的进程,并确认你的 shell 确实作为系统上的一个进程在运行。
点击 继续 完成此实验。
总结
在这个实验中,你学习了如何检查你在 Linux 中当前使用的 shell。你首先使用 echo $SHELL 命令显示了当前终端会话中运行的 shell 的路径。这表明 LabEx 环境默认使用 zsh。
然后,你探索了 /etc/passwd 文件,该文件存储了系统用户的信息,包括他们的默认登录 shell。通过查看该文件中你用户条目的最后一个字段,你可以验证登录时分配给你账户的 shell。这些方法提供了不同的方式来确定正在使用的 shell,无论是针对当前会话还是作为用户的默认设置。



