在 shell 中执行命令

在 shell 中执行命令

我正在读文章关于通过 bash shell 执行命令。在有关 shell 内置命令的段落中有这样一句话:

当内置命令的名称用作简单命令的第一个字时,shell 会直接执行该命令,而不创建新的进程

有人能解释一下这个说法吗?因为对我来说这个说法太清楚了。如果可以的话,请举几个例子。

答案1

Dir、CD、MD 和许多其他命令包含在 command.com 或 cmd.exe(适用于较新的 Windows 操作系统)中,因此它们没有自己的文件,因此在运行它们时不会创建新进程,因为命令解释器已经运行。

例子:

C:\>CD Windows - 将使 C:\Windows 成为您的当前目录,并且命令不会创建新进程

C:\> XcopyD:- 将进行复印,但是将创建一个名为 Xcopy 的新进程因为Xcopy是一个独立的文件。

Linux 也类似。

答案2

大多数 GNU/Linux 命令实际上是可执行文件(ls例如cat)。当你输入

touch 'Hello World.txt'

touch程序将在一个新进程中启动,独立于你的 Bash 进程。

当执行这样的程序时,就会创建一个新的进程


但是,内置命令由 shell 本身执行。例如,

echo 'Hello world!'

将由您正在输入的 Bash 实例执行。这对于许多其他内置命令来说很有意义,特别cd是因为进程只能更改其自己的工作目录。

相关内容