Betiklerimden birkaçı (tuş eşlemi değiştirme, genel anahtar ekleme) sanal bir konsoldayken xterm'de farklı davranmalıdır. Gerçek kod ne için
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
Betiklerimden birkaçı (tuş eşlemi değiştirme, genel anahtar ekleme) sanal bir konsoldayken xterm'de farklı davranmalıdır. Gerçek kod ne için
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
Yanıtlar:
Bana bağlanmak için bir X sunucusu olup olmadığını kontrol etmek istediğiniz gibi geliyor.
Gibi bir şey:
if [ -n "$DISPLAY" ]; then
: X
else
: no X
fi
Etkileşimli etkileşimi etkileşimli olmayan kabuklardan ayırmak istiyorsanız, test
algılamak için dahili desteğini kullanın (ksh'a sahip olup olmadığından emin değilsiniz, ancak coreutils'den ikili dosya da destekliyor):
test -t 0 # will return 0 for interactive shells
Gerçekten bir tty / pty / pts veya başka bir şey üzerinde olup olmadığınızı kastediyorsanız, çıktıyı şu adresten ayrıştırın tty
:
$ tty # konsole
/dev/pts/4
$ tty # virtual terminal
/dev/tty2
Bu işletim sistemine bağlı olacaktır. Linux için şunları yapabilirsiniz:
#!/bin/ksh
if [ "$TERM" == "linux" ]; then
echo "I'm in a virtual console"
else
echo "I'm not in a virtual console"
fi
Bu, elbette, TERM
ortam değişkenini kendiniz değiştirmediğinizi varsayar; bu, linux
yalnızca sanal bir konsola oturum açtığınızda otomatik olarak ayarlanır (Ubuntu altında xterm
, konsol uygulamalarında ayarlanır , ancak bu işletim sistemleri arasında değişebilir). Kullandığınız çeşitli uygulamalarda TERM içeriğini kontrol edin ve uygun şekilde ayarlayın.