我正在读文章关于通过 bash shell 执行命令。在有关 shell 内置命令的段落中有这样一句话:
当内置命令的名称用作简单命令的第一个字时,shell 会直接执行该命令,而不创建新的进程
有人能解释一下这个说法吗?因为对我来说这个说法太清楚了。如果可以的话,请举几个例子。
答案1
Dir、CD、MD 和许多其他命令包含在 command.com 或 cmd.exe(适用于较新的 Windows 操作系统)中,因此它们没有自己的文件,因此在运行它们时不会创建新进程,因为命令解释器已经运行。
例子:
C:\>CD Windows - 将使 C:\Windows 成为您的当前目录,并且命令不会创建新进程。
C:\> Xcopy。D:- 将进行复印,但是将创建一个名为 Xcopy 的新进程因为Xcopy是一个独立的文件。
Linux 也类似。
答案2
大多数 GNU/Linux 命令实际上是可执行文件(ls
例如cat
)。当你输入
touch 'Hello World.txt'
该touch
程序将在一个新进程中启动,独立于你的 Bash 进程。
当执行这样的程序时,就会创建一个新的进程
但是,内置命令由 shell 本身执行。例如,
echo 'Hello world!'
将由您正在输入的 Bash 实例执行。这对于许多其他内置命令来说很有意义,特别cd
是因为进程只能更改其自己的工作目录。