web-dev-qa-db-ja.com

tputで端末タイプを検出する

検出して端末タイプを設定したいのですが。たとえば、PuTTYを使用してSolarisボックスに接続している場合、$TERM変数はvt100に設定されます。ターミナルエミュレータがPuTTYの場合、$TERMxtermに設定するようにネゴシエートしたいと思います。

私はでそれに気づきました ^E PuTTYはPuTTYで応答します。しかし、最善の方法は、tputを使用して端末エミュレーターのタイプを検出することだと思います。問題は、これを行う方法について、terminfoまたはtputマニュアルに参照が見つからなかったことです。

それ以外の場合は、以下に基づいて試してみます。

unset remote_term;echo $'\cE';read -rt 1 -n5 remote_term ;echo remote_term=$remote_term
4

PuTTYで接続オプションを設定して目的の端末タイプをネゴシエートできない理由はありますか?

PuTTY構成で、[接続]-> [データ]をクリックし、[端末の詳細]セクションの[端末タイプの文字列]を任意の端末タイプに設定します。鉱山はansiに設定されていますが、xtermに簡単に変更できます。

これは、端末タイプに対するユーザーの意図を尊重するため、Ctrl-Eアンサーバックをインターセプトするよりもエレガントです。

1

おそらくこれは単純すぎるかもしれませんが、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はより創造的になる必要があります。)

1
Signal15