2016-09-11 1 views
4

dash -c de bash -c:"bash -c" par rapport comporte différemment "tableau de bord -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 

Y at-il une explication à cette différence?

+0

Je dirais que bash n'a pas besoin d'exécuter un shell pour lancer ps. –

Répondre

5

bash dispose d'une optimisation où la toute dernière commande d'un script est implicitement exécutée avec exec. Dash a récemment gagné cette optimisation, mais pas encore dans la version que vous utilisez. Vous verrez le même comportement avec bash -c 'exec ps' et dash -c 'exec ps'.