仮想コンソールまたはxtermにあるとき、私のスクリプトはどうやって知ることができますか?

仮想コンソールまたはxtermにあるとき、私のスクリプトはどうやって知ることができますか?

私のスクリプトのいくつか(キーマップの変更、公開鍵の追加)は、仮想コンソールとxtermで異なる動作をする必要があります。本物のコードは何ですか?

#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi

ベストアンサー1

対話型シェルと非対話型シェルを区別するには、組み込みtestサポートを使用してこれを検出します(kshにあるかどうかはわかりませんが、coreutilsのバイナリもサポートしています)。

test -t 0 # will return 0 for interactive shells

tty/pty/ptsまたは他の項目にあるかどうかを本当に知りたい場合は、次の出力を解析してくださいtty

$ tty # konsole
/dev/pts/4
$ tty # virtual terminal
/dev/tty2

おすすめ記事