検出して端末タイプを設定したいのですが。たとえば、PuTTYを使用してSolarisボックスに接続している場合、$TERM
変数はvt100
に設定されます。ターミナルエミュレータがPuTTYの場合、$TERM
をxterm
に設定するようにネゴシエートしたいと思います。
私はでそれに気づきました ^E PuTTYはPuTTY
で応答します。しかし、最善の方法は、tput
を使用して端末エミュレーターのタイプを検出することだと思います。問題は、これを行う方法について、terminfo
またはtput
マニュアルに参照が見つからなかったことです。
それ以外の場合は、以下に基づいて試してみます。
unset remote_term;echo $'\cE';read -rt 1 -n5 remote_term ;echo remote_term=$remote_term
PuTTYで接続オプションを設定して目的の端末タイプをネゴシエートできない理由はありますか?
PuTTY構成で、[接続]-> [データ]をクリックし、[端末の詳細]セクションの[端末タイプの文字列]を任意の端末タイプに設定します。鉱山はansiに設定されていますが、xtermに簡単に変更できます。
これは、端末タイプに対するユーザーの意図を尊重するため、Ctrl-Eアンサーバックをインターセプトするよりもエレガントです。
おそらくこれは単純すぎるかもしれませんが、your user-environment(そして、全員が自分のアカウントを持っていて、多くの人が同じものを使用する場所でクレイジーなアカウント共有が行われていないと仮定した場合)ユーザー名とパスワードの組み合わせ)..
自分のシェルの環境ファイルに何かを追加してみませんか?
Korn(/ bin/ksh)シェル(〜/ .kshrc)
##############################################################################
## TERM control - if we're on the console, fix it up.
TTY=` /usr/bin/tty ` # Really should call /bin/tty in HP-UX in case of S.U.M.
TTY_DEV=${TTY##*/dev/}
if [[ ${TTY_DEV} = "console" ]]; then
## Most serial-line consoles report "/dev/console" when you use 'tty'
## Since most consoles don't set their columns and rows, resulting in weird
## stuff when we open things like 'vi', we call 'resize' (if it's present)
if [[ -x /usr/openwin/bin/resize ]]; then
printf "Console...\c"
export PATH=${PATH}:/usr/openwin/bin && \
/usr/openwin/bin/resize >/dev/null 2>&1 && \
printf "fixed. \n" || \
printf "something's broke.\n"
Elif [[ -x /usr/bin/X11/resize ]]; then
printf "Console..."
export PATH=${PATH}:/usr/bin/X11 && \
/usr/bin/X11/resize >/dev/null 2>&1 && \
printf "fixed. \n" || \
printf "something's broke.\n"
else
printf "No resize binary found, check console settings.\n"
fi
else
TERM=xterm
fi
Bourne Again(/ bin/bash)シェル(〜/ .bashrc〜/.bash_profile)
(上記のコードは問題なく動作するはずです)
通常のBourne(/ bin/sh)シェル(〜/ .profile)
(上記のコードですが、/ bin/shは変数分割を行わないため、TTY_DEVはより創造的になる必要があります。)