デフォルトのTERMシェル変数値はどのように設定されますか?


13

Maverickにアップグレードした後、TERM変数を「ダム」に設定していますが、これはLucidから実行している同じホームディレクトリでは発生せず、TERMに関連するものを手動で変更しませんでした。

TERM変数はどこから設定されると考えられますか?

回答:


13

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」に設定し、シェルプロセスをフォークします。


私は確認し、gnome-terminalは正常に動作します。これは実際には「エミュレータ」のバグです。ターミネーターを使用しています。ありがとう
ジョアンピント

9

質問に文字通り答えるために、ターミナルエミュレータは$TERM.¹ を設定することになっています。

問題を解決するには、少なくとも使用しているターミナルエミュレータを知る必要があります。これは、バグや設定ミス端末エミュレータまたはあなたのシェル起動ファイルに問題(おそらく可能性があり~/.bashrcますが、おそらく~/.bash_profile/etc/bashrc/etc/profile、...)。

¹ ハードウェア端末を使用していないと仮定します。次にgettyinittab(SysVinitを使用する古いリリース)または/etc/init/tty*.conf(Ubuntu≥9.10、Upstartを使用)から呼び出されるの引数になります。


2
gettyはinittabから呼び出されません。Ubuntuにはinittabがありません!コンソールは/etc/init/tty*.confで定義されています
LassePoulsen

4
回答の中で脚注について初めて見たバッジを手に入れると思います:
poolie

15.04以降であるため、upstartはもはやデフォルトではなくなり、systemdはgetty @サービスでそれを処理します。 systemdで同じことをする... meh !!)
osirisgothra

1

ターミナルを変更する場合は、update-alternatives機能をチェックアウトしてください。

例えば:

update-alternatives --config x-terminal-emulator

Ubuntuのさまざまなシステムデフォルトオプションの多くは、この方法で設定されます。別の一般的なものは、www-browser

update-alternatives --config x-www-browser
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.