(正在运行的)shell 是一个进程,但并非所有进程都是 shell。
所有正在运行的应用程序和守护进程都是进程。唯一运行的不是进程的是内核(包括内核线程)。内核,至少在类似 Unix 的操作系统上,正在启动一个(或多个)初始手工制作的进程,通常称为init
. 这些进程是其他进程的整个层次结构的父进程。当您运行ps
或top
命令时,您将看到每个进程都有自己独特的PID
.
当您登录到终端仿真器,你将推出一种交互的shell,例如sh
,dash
,ksh
,bash
,zsh
和喜欢。这些 shell 正在解释您在终端窗口中键入的命令,例如ls
,cat
和date
。后者不是 shell,而是可执行的二进制文件。
您还可以运行 shell 脚本,这些脚本是包含要由 shell 执行的命令的文本文件。
由于并非所有程序都是 shell 脚本或交互式 shell 会话,因此您不能说 shell 是进程的同义词。