私のスクリプトのいくつか(キーマップの変更、公開キーの追加)は、仮想コンソールとxtermで異なる動作をする必要があります。の本当のコードは何ですか
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
接続するXサーバーがあるかどうかを確認したいようです。
何かのようなもの:
if [ -n "$DISPLAY" ]; then
: X
else
: no X
fi
インタラクティブシェルと非インタラクティブシェルを区別する場合は、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
これはオペレーティングシステムによって異なります。 Linuxの場合、これを行うことができます。
#!/bin/ksh
if [ "$TERM" == "linux" ]; then
echo "I'm in a virtual console"
else
echo "I'm not in a virtual console"
fi
もちろん、これはTERM
環境変数を自分で変更していないことを前提としています。これは仮想コンソールにログインしたときにのみ自動的にlinux
に設定されます(Ubuntuではコンソールアプリケーションではxterm
に設定されますが、OSによって異なる場合があります) 。使用している各種アプリケーションのTERMの内容を確認し、適宜設定してください。