默认的 TERM shell 变量值是如何设置的?

默认的 TERM shell 变量值是如何设置的?

升级到 Maverick 之后,我将 TERM 变量设置为“dumb”,从 Lucid 运行相同的主目录时不会发生这种情况,而且我没有手动更改与 TERM 相关的任何内容。

知道应该从哪里设置 TERM 变量吗?

答案1

为了详细说明 Gilles 所说的内容,假设您使用 Putty 从 Windows 远程连接到您的 ubuntu。

在 putty 配置选项中,Connection->Data 下有一个名为终端类型字符串的设置。您可以在那里设置 TERM,然后 putty 会指示 SSH 设置该环境变量。此后的某个时间点,您的 shell 将被执行,可能是 /bin/bash,它会从其父进程(可能是 sshd 进程)获取其环境。

如果您从远程 Linux 机器使用 ssh,情况也是如此,只是本地 TERM 环境变量通过 ssh 传递到远程连接。

对于终端仿真器来说,设置 TERM 环境变量是终端仿真器的工作。例如,getty 将 TERM 设置为“linux”并派生一个 shell 进程 (/bin/bash)。或者 gnome-terminal 将 TERM 设置为“xterm”并派生一个 shell 进程。

答案2

从字面上回答你的问题,终端仿真器应该设置$TERM

要解决您的问题,至少需要知道您使用的是什么终端仿真器。这可能是终端仿真器中的错误或配置错误,也可能是 shell 启动文件的问题(可能是~/.bashrc,但也可能,,,~/.bash_profile... )。/etc/bashrc/etc/profile

¹假设您没有使用硬件终端;那么它将是 的参数getty,从inittab(使用 SysVinit 的旧版本)或/etc/init/tty*.conf(使用 Upstart 的 Ubuntu ≥9.10)调用。

答案3

如果您想更改终端,请务必检查更新替代方案功能。

例如:

update-alternatives --config x-terminal-emulator

Ubuntu 中的许多系统默认选项都是通过此方法设置的。另一个常见的选项是 www 浏览器

update-alternatives --config x-www-browser

相关内容