&引用;bash-c";vs.“;破折号-c“;
&引用;bash-c";vs.“;破折号-c“;,bash,ubuntu,dash-shell,Bash,Ubuntu,Dash Shell,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 对于这种差异有什么解释吗?ba
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'
中看到相同的行为,我认为bash不需要运行shell来运行ps。