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

Debian Jessie 中用于控制台登录的“$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

答案1

我想Linux 内核TERM将其设置linux为 init 进程(pid 1)这里那里。您可以在以下位置看到它/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]

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

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

GRUB_CMDLINE_LINUX="TERM=vt100"

答案2

$TERM 变量通常在 /etc/profile 或 .bashrc 中设置,具体取决于所使用的发行版。

http://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO-11.html

相关内容