xtermと対比して仮想コンソールにいるとき、スクリプトはどのようにして知ることができますか?


11

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

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

回答:



9

対話型シェルと非対話型シェルを区別するつもりなら、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

私は、stackexchangeで3つの完璧な答えを得る立場にありませんでした。
John Baber-Lucero 2012

7

これはオペレーティングシステムによって異なります。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の内容を確認し、適宜設定してください。


私は、stackexchangeで3つの完璧な答えを得る立場にありませんでした。
John Baber-Lucero 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.