为什么"回声"不会出现在"ps"中?

Jav*_*Man 2 unix linux bash ps

我很难理解ps命令中出现的内容.为了测试我的理解,我创建了以下虚拟脚本

 #!/bin/bash
 for i in {1..100000}
 do
  date -u
  date -u
  date -u
 done
Run Code Online (Sandbox Code Playgroud)

在运行此脚本时,我打开了一个新终端并重复执行

ps -eaf | grep date | grep -v grep
Run Code Online (Sandbox Code Playgroud)

我能够在输出中约会过程.

后来我用替换date -u来改变了虚拟脚本echo "what is going on"

     #!/bin/bash
     for i in {1..100000}
     do
      echo "What is going on"
      echo "What is going on"
      echo "What is going on"
     done
Run Code Online (Sandbox Code Playgroud)

在运行更新的虚拟脚本时,我打开了一个新终端并重复执行

ps -eaf | grep echo | grep -v grep
Run Code Online (Sandbox Code Playgroud)

和回声从未在输出中显示.为什么是这样?我怀疑原因是脚本是一个bash脚本,可能是它使用内置echo,因此它没有显示在ps输出中.我对么?我在这里错过了什么?

tha*_*guy 8

echo 是一个内置的bash:

$ type echo
echo is a shell builtin
Run Code Online (Sandbox Code Playgroud)

这意味着在echo运行时不会创建新进程.所有的工作都是由bash流程完成的,这样做更有效率.

您可以echo显式运行非内置:

command echo "What is going on"
Run Code Online (Sandbox Code Playgroud)

/bin/echo相反,这个分叉和执行,让它显示出来ps.