在 Linux 中,你经常会看到一个可以输入文字命令的窗口。这个窗口通常叫做 Terminal(终端)。终端本身并不决定 ls、cd 或其他命令是什么意思;它负责显示文字、接收键盘输入,并把这些输入交给正在运行的 Shell。
Terminal 是界面
Terminal 可以理解成一个文字交互窗口。你在里面看到提示符、输入命令、查看输出。GNOME Terminal、Konsole、Windows Terminal 以及 macOS Terminal 都属于终端程序。它们的外观可能不同,但都可以承载一个 Shell 会话。
Shell 是命令解释器
Shell 是一个程序,它读取你的命令,解析命令名和参数,然后启动相应的程序或执行 Shell 自己提供的功能。常见 Shell 包括 bash、zsh 和 fish。很多 Linux 服务器默认使用 Bash。
你 输入文字
→
Terminal 接收与显示
→
Shell 解释并执行
提示符告诉你 Shell 已准备好
Shell 等待输入时会显示一个 prompt(提示符)。它可能包含用户名、主机名、当前目录等信息。例如下面的提示符表示用户 alex 正在一台名为 server 的机器上工作,并且当前位于主目录。
alex@server:~$ whoami
alex
alex@server:~$ pwd
/home/alex提示符中的 $ 通常表示普通用户会话,而 # 常见于 root 用户会话。不过提示符可以被自定义,所以不要只依靠一个符号判断权限。
命令、参数与输出
一条命令通常从程序名开始,后面可以跟参数。例如 echo hello 中,echo 是命令,hello 是传递给它的参数。Shell 解析这行文字并运行命令,然后终端把输出显示出来。
关键区别: 关闭 Terminal 窗口通常也会结束其中的 Shell 会话,但 Terminal 和 Shell 并不是同一个东西。Terminal 是交互界面;Shell 是解释命令的程序。
互动实验
可视化 Terminal 与 Shell 的关系
访问权限免费
模拟终端已启动。输入命令,观察输出和右侧文件系统。
$
模拟文件系统/home/alice
/homealicearchivebackupcachedataindex.bin
DocumentsDownloadsemptyPicturesprojectsrcREADME.md
.bashrc.profileaccess.logapp.logdraft.txterror.lognotes.txt
varlogsyslog
快捷按钮只负责填入命令;点击运行或按 Enter 后,终端和文件系统才会变化。知识测验
题目
下面哪一项最准确地描述 Terminal 与 Shell 的区别?