Некоторые оболочки, такие как zsh
, не разветвляют дочерний процесс для выполнения последней команды в командной строке или сценарии. Поскольку состояние выхода строки или сценария совпадает со статусом выхода последней команды, они вызывают exec()
в процессе оболочки без разветвления. Так что если вы выполните
sleep 5 && pstree
он ответит на sleep
дочерним процессом, дождется его завершения, затем вызовет exec()
для запуска pstree
.
Поскольку процесс pstree
заменяет оболочку, вы не видите оболочку в дереве процессов. pstree
будет ребенком sshd
.
Если вы измените его на
pstree && sleep 5
тогда вы должны увидеть оболочку в выводе pstree
, потому что pstree
больше не последняя команда.