2016-09-11 2 views
4

dash -c verhält sich anders als bash -c:"bash -c" vs. "Strich -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 

Gibt es für diesen Unterschied eine Erklärung?

+0

Ich würde sagen, dass bash keine Shell ausführen muss, um ps on zu starten. –

Antwort

5

Bash hat eine Optimierung, wo der allerletzte Befehl in einem Skript implizit mit exec ausgeführt wird. Diese Optimierung wurde kürzlich auch von Dash vorgenommen, aber noch nicht in der Version, die Sie verwenden. Sie werden das gleiche Verhalten mit bash -c 'exec ps' und dash -c 'exec ps' sehen.