Parece-me que você quer verificar se existe ou não um servidor X para se conectar.
Algo como:
if [ -n "$DISPLAY" ]; then
: X
else
: no X
fi
Alguns dos meus scripts (mudança de mapa de teclas, adição de chave pública) precisam agir de maneira diferente quando em um console virtual vs. em um xterm. Qual é o código real para
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
Se você quisesse distinguir shells interativos de não interativos, use o suporte interno do test
para detectá-lo (não tenho certeza se o ksh o possui, mas o binário do coreutils também o suporta):
test -t 0 # will return 0 for interactive shells
Se você realmente quis dizer se está em um tty / pty / pts ou algo mais, analise a saída de tty
:
$ tty # konsole
/dev/pts/4
$ tty # virtual terminal
/dev/tty2
Isso dependerá do sistema operacional. Para o Linux, você poderia fazer isso:
#!/bin/ksh
if [ "$TERM" == "linux" ]; then
echo "I'm in a virtual console"
else
echo "I'm not in a virtual console"
fi
Isso, obviamente, pressupõe que você não tenha alterado a variável de ambiente TERM
, que é automaticamente definida como linux
apenas quando você faz logon em um console virtual (no Ubuntu ela está definida como xterm
no console aplicativos, mas isso pode variar entre sistemas operacionais). Verifique o conteúdo do TERM nas várias aplicações que você está usando e defina como apropriado.
Tags command-line xterm shell terminal