回答:
Gillesの言うことを詳しく説明するために、Puttyを使用してWindowsからUbuntuにリモート接続しているとします。
putty構成オプションの[接続]-> [データ]に、ターミナルタイプ文字列と呼ばれる設定があります。TERMをそこに設定すると、puttyはSSHにその環境変数を設定するよう指示します。そのあとのある時点で、おそらく/ bin / bashというシェルが実行され、親プロセス(おそらくsshdプロセス)から環境を取得します。
リモートlinuxボックスからsshを使用する場合も同様です。ローカルTERM環境変数がssh経由でリモート接続に渡されるだけです。
端末エミュレーターの場合、TERM環境変数を設定するのは端末エミュレーターの仕事です。たとえば、gettyはTERMを「linux」に設定し、シェルプロセス(/ bin / bash)をフォークします。またはgnome-terminalはTERMを「xterm」に設定し、シェルプロセスをフォークします。
質問に文字通り答えるために、ターミナルエミュレータは$TERM
.¹ を設定することになっています。
問題を解決するには、少なくとも使用しているターミナルエミュレータを知る必要があります。これは、バグや設定ミス端末エミュレータまたはあなたのシェル起動ファイルに問題(おそらく可能性があり~/.bashrc
ますが、おそらく~/.bash_profile
、/etc/bashrc
、/etc/profile
、...)。
¹ ハードウェア端末を使用していないと仮定します。次にgetty
、inittab
(SysVinitを使用する古いリリース)または/etc/init/tty*.conf
(Ubuntu≥9.10、Upstartを使用)から呼び出されるの引数になります。