未设置 TERM 系统环境变量 - Windows 10

Jan*_*n C 3 environment-variables windows-10 windows-terminal

因此,我错误地删除了一堆环境变量...
我无法理解的是 TERM,一个系统变量。这应该是指 Windows 终端吗?我应该将其设置为什么值?

use*_*686 5

没关系。无论操作系统如何,都不TERM应该在系统范围内定义。

一般来说,环境是每个进程的事情。“系统”或“用户”列表都仅用于在登录时初始化环境变量,但之后“当前”环境将从父进程复制到子进程,并且每个进程都可以更改自己的环境而不影响其余进程系统的。

的目的TERM是描述哪种终端类型连接到该特定进程的输入/输出。TERM 对于图形程序(甚至包括终端本身)毫无意义,并且由于终端具有不同的功能,因此其值可能会有所不同。例如,如果您同时运行 Xterm 和 Urxvt,您将在其中一个中看到“TERM=xterm”,而在另一个中看到“TERM=rxvt-unicode”。

因此,只有终端应用程序本身应该为其子进程设置 TERM。(我不确定 Windows 上的 Conhost 是否可以实现这一点,因为它是控制台应用程序的应用程序而不是父应用程序。)


Ncurses terminfo 数据库具有ms-terminalWindows 终端应用程序的术语定义,尽管xtermxterm-256color“足够兼容”(这是大多数应用程序理解的内容,因此也是大多数新终端尝试模拟的内容)。

类似地,MinTTY(Cygwin 终端)mintty在 Ncurses 中具有 terminfo 文件,但也大多xterm兼容。Windows 控制台 (Conhost) 可能会使用ms-vt100+ms-vt100-color

(话虽这么说,在 Windows 终端上本地运行的应用程序通常无需 TERM 即可运行,要么是因为它们已经知道自己在 Windows 上运行,要么是因为它们假设整个世界都是 xterm 兼容的,要么是因为它们不使用终端首先是模拟(即它们使用旧的 Windows“控制台”API)。但是,当您“ssh”到另一台主机时,SSH 客户端应该发送一个要在服务器上设置的 TERM 值。)