Dans la deuxième méthode proposée par cette page, on récupère le tty dans lequel bash est exécuté avec la commande :
ps ax | grep $$ | awk '{ print $2 }'
Je me suis dit que c'était sûrement un peu paresseux, répertoriant tous les processus en cours d'exécution uniquement pour en extraire l'un d'eux. Ne serait-il pas plus efficace (je demande aussi si cela introduirait des effets indésirables) de faire :
ps -p $$ | tail -n 1 | awk '{ print $2 }'
Pour votre information, je suis tombé sur ce problème car parfois la première commande produisait en fait deux lignes (ou plus). Cela se produirait de manière aléatoire, lorsqu'il y aurait un autre processus en cours d'exécution avec un PID contenant $$
comme sous-chaîne. Dans la deuxième approche, j'évite de tels cas en demandant le PID que je sais que je veux.
Réponse acceptée :
En tapant simplement tty
:
$ tty
/dev/pts/20
Trop simple et évident pour être vrai 🙂
Modifier : Le premier vous renvoie également le pty
du processus exécutant grep
comme vous pouvez le remarquer :
$ ps ax | grep $$
28295 pts/20 Ss 0:00 /bin/bash
29786 pts/20 S+ 0:00 grep --color=auto 28295
par conséquent, vous devrez filtrer le grep pour obtenir un seul résultat, qui devient moche :
ps ax | grep $$ | grep -v grep | awk '{ print $2 }'
ou en utilisant
ps ax | grep "^$$" | awk '{ print $2 }'
(une variante plus sensée)