2017-01-23 12 views
0

私はtermcapsを使用するプログラムを作成しています。私はどの端末を使用しているのかを知る必要があります。
私はgetenv("TERM")で変数TERMを得ることができますが、私のプログラムは "$ env -i ./myprog"で起動でき、TERMは設定されません。TERM環境変数を安全に設定できますか?

どのターミナルタイプを使用すればよいですか?
TERM変数をアプリケーションでxterm/xterm-256colorに設定しても問題ありませんか?
移植性の問題がありますか?
これを行う方法はありますか(termtypeの取得)は安全ですか?
私は多くのマニュアル(getty-getttab-tty-ttys)と投稿をしていますが、私は解決策を見つけることができません。

シェルを起動すると(zshまたはtcshなど)、私はいくつかのキーに問題があるので、私も心配しています。例えば

そう等zshを起動:
$env -i zsh
は、矢印とtermcaps(さえCTR-d)を意味任意のキーを使用してトラブルの原因となります。
bashtcshは、通常は多くのキーで動作しますが、すべてではありません。

+1

はTERM変数は、使用する端末タイプを決定するために正確に存在ターミナルタイプを推測し、TERMを設定するもう一つの一般的な方法はほとんどありません。設定されていない端末を選択させるか、 'vt100'をデフォルトにしようとすることができます。なぜなら、これはしばしば使われるからです。 – Ctx

+0

私は可能なアプリケーションよりもポータブルなものを手に入れようとしていますので、デフォルトのvt100に設定することを選択した場合、私はいつか携帯性の問題を抱えていますか? – LotoLo

+0

使用している端末エミュレーションがvt100と互換性がない場合は、期待どおりに機能しません。移植可能な方法は次のとおりです。TERM環境変数の設定に依存します。設定されていない場合、ユーザは自分の環境を修正する必要があります。 – Ctx

答えて

0

ほとんどの端末エミュレータはそれをエミュレートするように設定されているため、TERM=vt100をデフォルト(Ctxの提案)に設定することは幾分安全です。しかし、この場合は警告を出力することをお勧めします。

1

実際にtermcapを使用している場合(busyboxなどの最小限の実装ではない)、tsetを提供するシステムを使用している可能性があります。これは、ユーザにTERMのデフォルトの選択肢を与えることができます。このような

何か:

eval `tset -s vt100` 

シェルの初期化では動作します。

実際にはtsetはtermcap-systemsに限定されませんが、それが開始された場所です。

さらにリーディング:

関連する問題