私のスクリプトのいくつか(キーマップの変更、公開キーの追加)は、仮想コンソールとxtermで異なる動作をする必要があります。実際のコードは何ですか
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
私のスクリプトのいくつか(キーマップの変更、公開キーの追加)は、仮想コンソールと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の内容を確認し、適宜設定してください。