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

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

知道预期从哪个TERM变量设置?

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

在putty配置选项中,在Connection-> Data下有一个名为terminal-type string的设置。 您可以在那里设置TERM,putty指示SSH设置该环境变量。 在此之后的某个时刻你的shell将被执行,可能是/ bin / bash,它从其父进程获取其环境,可能是sshd进程。

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

在终端仿真器的情况下,终端仿真器的工作是设置TERM环境变量。 例如,getty将TERM设置为“linux”并分叉shell进程(/ bin / bash)。 或者gnome-terminal将TERM设置为“xterm”并分叉shell进程。

要按字面意思回答你的问题,终端模拟器应该设置$TERM TERM.¹

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

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

如果要更改终端,请确保查看更新替代function。

例如:

 update-alternatives --config x-terminal-emulator 

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

 update-alternatives --config x-www-browser