"bash -c" 对比 "dash -c"

"bash -c" vs. "dash -c"

dash -c 的行为不同于 bash -c:

docker run -it ubuntu /bin/dash -c ps
  PID TTY          TIME CMD
    1 ?        00:00:00 sh
    7 ?        00:00:00 ps

docker run -it ubuntu /bin/bash -c ps
  PID TTY          TIME CMD
    1 ?        00:00:00 ps

对这种差异有解释吗?

bash 有一个优化,其中脚本中的最后一个命令隐式地用 exec 执行。 dash 最近也获得了这种优化,但还没有在您使用的版本中。您会看到 bash -c 'exec ps'dash -c 'exec ps'.

的相同行为