web-dev-qa-db-ja.com

コンソールログイン(Ubuntu)で設定されたデフォルトのTERM値をどのように変更しますか?

Ubuntuの$ TERMシェル値は、コンソールログインのデフォルトで「xterm」になります。デフォルトで「xterm-color」になるように変更するにはどうすればよいですか?これがカラープロンプトをオンにする最も簡単な方法のように見えるので、私は尋ねています。

.bashrcまたは他のログインスクリプトでTERM値をリセットできることは承知していますが、TERM値をより適切なデフォルトに強制したいだけです。

6
cmcginty

[〜#〜] term [〜#〜]変数は、OSが端末に情報を表示する方法を決定するのに役立つterminfoデータベースのエントリの名前を格納します。デフォルトの設定は、ログイン方法に完全に依存します。


通常、「コンソール」とは、物理的にコンピューターの前にいて、テキストベースの仮想端末(VT1-6)の1つにログインしていることを意味します。

  • [〜#〜] term [〜#〜]デフォルトはlinux(これはディストリビューション間で異なる場合があります; vt1は安全な代替手段です)

    • これを変更するには、Ubuntu 9.10で、/ etc/init/tty1.confで定義されているgettyコマンドを微調整する必要があります。これにより、/ dev/tty1(VT1)の設定が変更され、/ etc/init/tty2.conf、-でも同じ変更を行う必要があります。 .. tty3.confなど、他の仮想端末も取得します。

      # original getty command in /etc/init/tty1.conf
      exec /sbin/getty -8 38400 tty1
      
      # new command; sets default TERM on /dev/tty1 to "foobar"
      exec /sbin/getty -8 38400 tty1 foobar
      

X/Gnome/KDE(VT7、8、または9)にログインしている場合、少なくともこのコンテキストでは、コンソールを使用していません。技術的には、これはXにログインし、端末エミュレーターアプリケーションを介して疑似端末を使用します。これにより、シェルとコマンドラインを表示するウィンドウが表示されます。

  • [〜#〜] term [〜#〜]は、ターミナルエミュレータによって最初に設定されます。シェルの起動ファイルで変更できます(〜/ .bashrc〜/ .profileなど)。

    • xtermrxvtxterm-colorxterm-256colorはすべて一般的な値です

    • この値を変更するには、ターミナルエミュレータのドキュメントを参照してください。たとえば、rxvt-unicode(aka rxvt)を使用する場合は、-tn termnameコマンドラインオプションを使用します。


リモートで(SSHまたはリモートXを介して)ログインしている場合は、どのような状況でもコンソールを使用していないことは間違いありません。ここでも、疑似端末を使用しています。

  • [〜#〜] term [〜#〜]はSSHを開始したプログラムに継承されます:
    • Linux仮想端末からのSSHは、リモート[〜#〜] term [〜#〜] of linux;になります。
    • X-windowsターミナルエミュレータのコマンドラインからSSHを実行すると、リモート[〜#〜] term [〜#〜]が発生します[〜#〜] term [〜#〜] SSHコマンドの前に設定されました。
    • PuTTYを使用するWindowsシステムからのSSHのデフォルトはxtermですが、これはPuTTYの構成で変更できます。
    • 上記の設定はいずれも、リモートユーザーのシェル起動ファイルによって上書きできます。
10
quack quixote

ここにたくさんの良い情報があります:

man 7 term

デフォルトのTERM値は、/ etc/inittab(LinuxおよびSystem-VのようなUNIX)または/ etc/ttys(BSD UNIX)のいずれかによって行ごとに設定されます。これは、ほとんどの場合、ワークステーションおよびマイクロコンピューターコンソールには十分です。

次の問題は、Ubuntu9.10に/etc/inittabまたは/etc/ttysがないことです。

man inittab

Upstart init(8)デーモンはこのファイルを使用せず、代わりに/ etc/init内のファイルから構成を読み取ります。詳細については、init(5)を参照してください。

/ etc/initを調べると、tty * .confファイルが見つかります。それらは、gettyを実行することによって実行されます。それで:

man getty

term TERM環境変数に使用される値。これは、init(8)が設定したものをすべてオーバーライドし、ログインとシェルによって継承されます。

これは良い情報です。これで、デフォルトのTERM値がinit(8)から取得されていることがわかりました。

...結局のところ、initで使用されるデフォルトのTERM値を変更する方法を理解できませんでした。

2
cmcginty