Я испробовал много разных подходов, и лучший для меня:
ps -p $$
Он также работает под Cygwin и не может выдавать ложные срабатывания в качестве PIDоглавлению.С некоторой очисткой он выводит только имя исполняемого файла (в Cygwin с путем):
ps -p $$ | tail -1 | awk '{print $NF}'
Вы можете создать функцию, чтобы вам не пришлось ее запоминать:
# print currently active shell
shell () {
ps -p $$ | tail -1 | awk '{print $NF}'
}
... и затем просто выполните shell
.
Протестировано в Debian и Cygwin.