В вопросе вы упомянули разбор pstree
. Вот относительно простой способ:
bash-4.3$ pstree -Aals $$ | grep -E '^ *`-((|ba|da|k|c|tc|z)sh|vim?)( |$)'
`-bash
`-bash --posix
`-vi -y
`-dash
`-vim testfile.txt
`-tcsh
`-csh
`-sh -
`-zsh
`-bash --norc --verbose
Опции pstree
:
-A
-Вывод ASCII для упрощения фильтрации (в нашем случае каждой команде предшествует`-
)-a
-показать также аргументы команды, как побочный эффект -каждая команда отображается в отдельной строке, и мы можем легко отфильтровать вывод, используяgrep
-l
-не обрезать длинные строки -s
-показать родителей выбранного процесса pstree
)$$
-выбранный процесс -PID текущей оболочки