Beberapa skrip saya (perubahan keymap, penambahan kunci publik) perlu bertindak berbeda ketika di konsol virtual vs. dalam xterm. Untuk apa kode sebenarnya
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
Beberapa skrip saya (perubahan keymap, penambahan kunci publik) perlu bertindak berbeda ketika di konsol virtual vs. dalam xterm. Untuk apa kode sebenarnya
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
Jawaban:
Kedengarannya bagi saya seperti Anda ingin memeriksa apakah ada server X yang terhubung.
Sesuatu seperti:
if [ -n "$DISPLAY" ]; then
: X
else
: no X
fi
Jika Anda bermaksud membedakan shell interaktif dan noninteraktif, gunakan test
dukungan inbuilt untuk mendeteksinya (tidak yakin apakah ksh memilikinya, tetapi biner dari coreutils juga mendukungnya):
test -t 0 # will return 0 for interactive shells
Jika Anda benar-benar bermaksud apakah Anda menggunakan tty / pty / pts atau sesuatu yang lain, parsing output dari tty
:
$ tty # konsole
/dev/pts/4
$ tty # virtual terminal
/dev/tty2
Ini akan tergantung pada sistem operasi. Untuk Linux, Anda bisa melakukan ini:
#!/bin/ksh
if [ "$TERM" == "linux" ]; then
echo "I'm in a virtual console"
else
echo "I'm not in a virtual console"
fi
Ini, tentu saja, mengasumsikan bahwa Anda belum mengubah TERM
variabel lingkungan sendiri, yang secara otomatis ditetapkan linux
hanya ketika Anda masuk ke konsol virtual (di bawah Ubuntu diatur ke xterm
dalam aplikasi konsol, tetapi ini dapat bervariasi di antara OS). Periksa isi TERM di berbagai aplikasi yang Anda gunakan, dan atur sesuai kebutuhan.