Alguns dos meus scripts (alteração do mapa de teclas, adição de chave pública) precisam agir de maneira diferente quando em um console virtual e em um xterm. Qual é o código real para
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
Alguns dos meus scripts (alteração do mapa de teclas, adição de chave pública) precisam agir de maneira diferente quando em um console virtual e em um xterm. Qual é o código real para
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
Respostas:
Parece-me que você deseja verificar se existe ou não um servidor X ao qual se conectar.
Algo como:
if [ -n "$DISPLAY" ]; then
: X
else
: no X
fi
Se você pretendia distinguir os shells interativos dos não interativos, use test
o suporte embutido 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 outra coisa, analise a saída em tty
:
$ tty # konsole
/dev/pts/4
$ tty # virtual terminal
/dev/tty2
Isso vai depender do sistema operacional. Para Linux, você pode 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
Obviamente, isso pressupõe que você não alterou a TERM
variável de ambiente, que é definida automaticamente linux
somente quando você faz login em um console virtual (no Ubuntu, ele é definido xterm
em aplicativos de console, mas isso pode variar entre os sistemas operacionais). Verifique o conteúdo do TERM nos vários aplicativos que você está usando e defina conforme apropriado.