Ve druhé metodě navrhované touto stránkou se dostane tty, ve kterém se bash spouští, pomocí příkazu:
ps ax | grep $$ | awk '{ print $2 }'
Myslel jsem si, že je to jistě trochu líné, vypisovat všechny běžící procesy, abych extrahoval jeden z nich. Nebylo by efektivnější (také se ptám, zda by to přineslo nežádoucí efekty) udělat:
ps -p $$ | tail -n 1 | awk '{ print $2 }'
FYI, narazil jsem na tento problém, protože někdy první příkaz skutečně poskytl dva (nebo více) řádků. To by se stalo náhodně, když by běžel jiný proces s PID, který obsahuje $$
jako podřetězec. Ve druhém přístupu se takovým případům vyhýbám tím, že si vyžádám PID, o kterém vím, že ho chci.
Přijatá odpověď:
Jednoduše zadáním tty
:
$ tty
/dev/pts/20
Příliš jednoduché a zřejmé, aby to byla pravda 🙂
Upravit: První z nich vám vrátí také pty
procesu běžícího grep
jak si můžete všimnout:
$ ps ax | grep $$
28295 pts/20 Ss 0:00 /bin/bash
29786 pts/20 S+ 0:00 grep --color=auto 28295
proto byste museli odfiltrovat grep, abyste získali pouze jeden výsledek, který začíná být ošklivý:
ps ax | grep $$ | grep -v grep | awk '{ print $2 }'
nebo pomocí
ps ax | grep "^$$" | awk '{ print $2 }'
(rozumnější varianta)