stty e versões mais antigas de quem sou eu emitirá mensagens de erro quando elas não estiverem conectadas a um dispositivo tty. stty
verifica stdin (fd 0); Não sei qual descritor de arquivo who
verifica. Para evitar essas mensagens de erro, a solução usual é usar a opção -t
do teste (mais comumente conhecido como [
) para verificar se o shell está conectado a um tty.
if [ -t 0 ]
then
ID='who am i | awk '{print $1}''
else
ID="unknown"
fi
No seu caso, você pode cercar toda a lógica que configura a variável PS1 na instrução if
, já que o PS1 só faz sentido quando se está trabalhando em um tty.
A seguir, a seção relevante da explicação de test
no link acima.
-t file_descriptor
True if file descriptor number file_descriptor is open and is associated with a terminal. False if file_descriptor is not a valid file descriptor number, or if file descriptor number file_descriptor is not open, or if it is open but is not associated with a terminal.