2016-09-11 4 views
4

dash -c ведет себя по-разному от bash -c:"Баш -c" против "тире -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 

Есть ли объяснение этой разницы?

+0

Я бы сказал, что bash не нужно запускать оболочку для запуска ps. –

ответ

5

У bash есть оптимизация, где самая последняя команда в скрипте неявно выполняется с exec. Дэш недавно получил эту оптимизацию, но еще не в той версии, которую вы используете. Вы увидите то же поведение с bash -c 'exec ps' и dash -c 'exec ps'.

Смежные вопросы