"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'
.
的相同行为
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'
.