Nel secondo metodo proposto da questa pagina, si ottiene la tty in cui viene eseguito bash con il comando:
ps ax | grep $$ | awk '{ print $2 }'
Ho pensato tra me e me che sicuramente questo è un po 'pigro, elencando tutti i processi in esecuzione solo per estrarne uno. Non sarebbe più efficiente (chiedo anche se ciò introdusse effetti indesiderati) da fare:
ps -p $$ | tail -n 1 | awk '{ print $2 }'
Cordiali saluti, mi sono imbattuto in questo problema perché a volte il primo comando produceva effettivamente due (o più) righe. Ciò accadrebbe in modo casuale, quando ci sarebbe un altro processo in esecuzione con un PID che contiene $$
come sottostringa. Nel secondo approccio, evito tali casi richiedendo il PID che so di volere.
Risposta accettata:
Semplicemente digitando tty
:
$ tty
/dev/pts/20
Troppo semplice e ovvio per essere vero 🙂
Modifica: Il primo ti restituisce anche il pty
del processo che esegue grep
come puoi notare:
$ ps ax | grep $$
28295 pts/20 Ss 0:00 /bin/bash
29786 pts/20 S+ 0:00 grep --color=auto 28295
quindi dovresti filtrare grep per ottenere un solo risultato, che sta diventando brutto:
ps ax | grep $$ | grep -v grep | awk '{ print $2 }'
o utilizzando
ps ax | grep "^$$" | awk '{ print $2 }'
(una variante più sana)