web-dev-qa-db-ja.com

コンソールログイン用にDebianJessieで設定されている `$ TERM`環境変数はどこにありますか?

デフォルトの$TERM環境変数を設定する方法と場所に関する多くの記事とSEの質問を読みました。

残念ながら、Debian 8.1では、$TERMからシステムにログインするときに、デフォルトのtty1変数がどこに設定されているかがわかりません。

これが確かに重複した質問である場合、私は正しい方向に向けられたいと思いますが、次の質問は答えを提供したようには見えませんでした:

tmux、TERM、256色をサポート

TERM環境変数のデフォルトはどこに設定されますか?

$ TERM変数を手動で設定するのは正しいですか?

編集

tty1経由でログインすると、$TERMは次のように設定されます。

$> echo $TERM
linux

/usr/lib/systemd/のリスト、ここにはsystemディレクトリがないことに注意してください。

$> ls -al
total 28
drwxr-xr-x  7 root root 4096 Aug 19 13:37 .
drwxr-xr-x 44 root root 4096 Aug 20 14:28 ..
drwxr-xr-x  2 root root 4096 Aug 19 13:37 catalog
drwxr-xr-x  2 root root 4096 May 26 02:07 network
drwxr-xr-x  2 root root 4096 Aug 19 13:37 ntp-units.d
drwxr-xr-x  2 root root 4096 Aug 19 13:37 user
drwxr-xr-x  2 root root 4096 May 26 02:07 user-generators
4
111---

Linuxカーネル ここ および そこ によって、initプロセス(pid 1)のTERMlinuxに設定されていると思います。 /proc/1/environで確認できます(次の出力はUbuntu 15.04からのものです):

$ Sudo strings /proc/1/environ 
HOME=/
init=/sbin/init
recovery=
TERM=linux
BOOT_IMAGE=/boot/vmlinuz-3.19.0-25-generic.efi.signed
PATH=/sbin:/usr/sbin:/bin:/usr/bin
PWD=/
rootmnt=/root

Debian/Ubuntu systemdベースのシステムでは、/lib/systemd/system/[email protected]の定義によって子gettyプロセスに伝播されます。

[Service]
# the VT is cleared by TTYVTDisallocate
ExecStart=-/sbin/agetty --noclear %I $TERM

したがって、カーネルコマンドラインでTERMをオーバーライドできる可能性があります。 /etc/default/grubを編集してupdate-grubを実行し、再起動してみてください。

GRUB_CMDLINE_LINUX="TERM=vt100"
5
yaegashi