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

Joã*_*nto 13 command-line bash

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

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

Jay*_*ren 13

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

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

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

在终端模拟器的情况下,终端模拟器的工作是设置 TERM 环境变量。例如,getty 将 TERM 设置为“linux”并派生一个 shell 进程 (/bin/bash)。或 gnome-terminal 将 TERM 设置为“xterm”并派生一个 shell 进程。


Gil*_*il' 11

要从字面上回答您的问题,终端模拟器应该设置$TERM

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

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

  • 我认为您第一次使用我在答案中看到的脚注时会获得徽章:-) (4认同)
  • getty 不是从 inittab 调用的,Ubuntu 不再有 inittab 了!控制台由 /etc/init/tty*.conf 定义 (2认同)