Senaryom xterm'e karşı sanal bir konsolda olduğumu nasıl bilebilir?


11

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:


6

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

1
Stackexchange üzerinde hiç üç mükemmel cevaba sahip olmadım.
John Baber-Lucero

9

Etkileşimli etkileşimi etkileşimli olmayan kabuklardan ayırmak istiyorsanız, testalgı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

Stackexchange üzerinde hiç üç mükemmel cevaba sahip olmadım.
John Baber-Lucero

7

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, TERMortam değişkenini kendiniz değiştirmediğinizi varsayar; bu, linuxyalnı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.


Stackexchange üzerinde hiç üç mükemmel cevaba sahip olmadım.
John Baber-Lucero
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.