Debian Jessie 中用于控制台登录的“$TERM”环境变量在哪里设置?

111*_*--- 4 terminal debian environment-variables systemd console

我已经阅读了很多关于如何以及在何处设置默认$TERM环境变量的文章和 SE 问题。

不幸的是,在 Debian 8.1$TERM中,从tty1.

如果这确实是一个重复的问题,我很想指出正确的方向,但以下问题似乎没有提供答案:

tmux、TERM 和 256 色支持

TERM 环境变量默认在哪里设置?

手动设置 $TERM 变量是否正确?

编辑

当我通过tty1这里登录时$TERM设置为:

$> echo $TERM
linux
Run Code Online (Sandbox Code Playgroud)

的清单/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
Run Code Online (Sandbox Code Playgroud)

yae*_*shi 5

我想这里和那里的Linux 内核TERM都设置linux为 init 进程(pid 1)。您可以在其中看到(抱歉,以下输出来自 Ubuntu 15.04):/proc/1/environ

$ 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
Run Code Online (Sandbox Code Playgroud)

在基于 Debian/Ubuntu systemd 的系统上,它通过/lib/systemd/system/getty@.service.

[Service]
# the VT is cleared by TTYVTDisallocate
ExecStart=-/sbin/agetty --noclear %I $TERM
Run Code Online (Sandbox Code Playgroud)

因此,您可以TERM在内核命令行中进行覆盖。尝试编辑/etc/default/grub并运行update-grub并重新启动。

GRUB_CMDLINE_LINUX="TERM=vt100"
Run Code Online (Sandbox Code Playgroud)