Во втором методе, предложенном на этой странице , вы получите tty, в котором bash запускается с помощью команды:
ps ax | grep $$ | awk '{ print $2 }'
Я подумал, что это немного лениво, перечисляя все запущенные процессы только для извлечения одного из них. Разве это не было бы более эффективно (я также спрашиваю, привнесет ли это нежелательные эффекты):
ps -p $$ | tail -n 1 | awk '{ print $2 }'
К вашему сведению, я сталкивался с этой проблемой, потому что иногда первая команда фактически выдает две (или более) строки. Это произойдет случайным образом, когда будет запущен другой процесс с PID, который содержит $$
в качестве подстроки. Во втором подходе я избегаю таких случаев, запрашивая PID, который, как я знаю, я хочу.
tty
команды в вашей сессии bash. Если вы настаиваете на использованииps
-ps -p $$ -o tty=