更新:
内部命令是通过 shell 完成的,因此在正常执行中并未作为单独的进程完成。
但是如果内置进程在后台执行,bash 会执行哪些步骤。
该过程如何在没有单独文件的情况下执行。
- 是否创建一个包含内置命令代码的文件然后执行它?
- 或者 bash 先将这些命令转换为 bash -c "cd" 然后再执行?
为什么一些内置命令会立即退出而不等待任何输入,例如 read&
为什么 bash 在检查命令(文件)是否存在之前首先提供 PID。
谢谢你,
答案1
正如您理解的那样,shell 内置函数(例如)echo
由正在运行的 shell 处理,因此不需要在前台启动新进程(通常)。
但是,如果将它们发送到后台,则它们需要由不同的 shell 控制,因此将使用相关命令启动一个新的 shell 进程。这在 bash 中应该很容易观察到,因为在后台发送进程将在作业编号旁边显示新进程 ID,例如:
$ echo 'hi' &
[1] 19536
hi
在这种情况下,进程 19536 是一个新的 bash 实例。