如何更改在控制台登录 (Ubuntu) 时设置的默认 TERM 值?

cmc*_*nty 7 bash shell console xterm

对于控制台登录,Ubuntu 中的 $TERM shell 值默认为“xterm”。如何更改它使其默认为“xterm-color”?我问是因为看起来这是打开颜色提示的最简单方法。

我知道您可以在 .bashrc 或其他登录脚本中重置 TERM 值,但我宁愿将 TERM 值强制为更合理的默认值。

qua*_*ote 11

TERM变量存储在某个条目的名称terminfo的数据库,可以帮助操作系统决定如何显示信息到终端。它的默认设置完全取决于您的登录方式。


通常,“控制台”意味着您实际在计算机前,登录到基于文本的虚拟终端 (VT1-6) 之一。

  • TERM默认为linux(这可能因发行版而异;vt100是一个安全的替代方案)

    • 要更改此设置,在 Ubuntu 9.10 上,您需要调整/etc/init/tty1.conf 中定义的getty命令。这将更改/dev/tty1 (VT1) 的设置,并且您需要在/etc/init/tty2.conf..tty3.conf等中进行相同的更改以获取其他虚拟终端。

      # original getty command in /etc/init/tty1.conf
      exec /sbin/getty -8 38400 tty1
      
      # new command; sets default TERM on /dev/tty1 to "foobar"
      exec /sbin/getty -8 38400 tty1 foobar
      
      Run Code Online (Sandbox Code Playgroud)

如果您登录到 X/Gnome/KDE(VT7、8 或 9),那么您没有使用控制台,至少在这种情况下是这样。从技术上讲,这是登录 X 并通过终端模拟器应用程序使用伪终端——这就是为您提供显示 shell 和命令行的窗口的原因。

  • TERM最初由您的终端模拟器设置。它可以在你的 shell 启动文件(~/.bashrc~/.profile等)中修改。

    • xterm , rxvt , xterm-color , xterm-256color都是常见的值

    • 要更改此值,请查阅终端仿真器的文档。例如,如果使用rxvt-unicode(又名urxvt),您将使用-tn termname命令行选项。


如果您是远程登录(通过 SSH 或远程 X),那么您绝对不会在任何上下文中使用控制台;再次,您使用的是伪终端

  • TERM由启动 SSH 的程序继承:
    • 从在远程Linux虚拟终端结果SSH TERMLinux的;
    • 从 X-windows 终端模拟器中的命令行执行 SSH 会导致远程TERM与 SSH 命令之前设置的任何TERM 相同
    • SSH 从使用 PuTTY 的 Windows 系统默认为xterm,但这可以在 PuTTY 的配置中更改;
    • 并且上述任何设置都可以被远程用户的 shell 启动文件覆盖。