所以我错误地删除了一堆环境变量...
我无法理解的是 TERM,一个系统变量。这是指 Windows 终端吗?我应该将它设置为什么值?
答案1
没关系。无论操作系统是什么,TERM
都应该绝不在系统范围内定义。
一般而言,环境是每个进程的事情。“系统”或“用户”列表都只用于在登录时初始化环境变量,但之后“当前”环境会从父进程复制到子进程,并且每个进程都可以更改自己的环境而不会影响系统的其余部分。
的目的TERM
是描述哪种端子类型连接到的输入/输出这个具体的过程。TERM 对于图形程序(甚至包括终端本身)毫无意义,并且由于终端具有不同的功能,因此其值在不同的终端之间会有所不同。例如,如果您同时运行 Xterm 和 Urxvt,您会在一个终端中看到“TERM=xterm”,而在另一个终端中看到“TERM=rxvt-unicode”。
因此,只有终端应用程序本身才应该为其子进程设置 TERM。(我不确定 Windows 上的 Conhost 是否可以做到这一点,因为它是孩子控制台应用程序,而不是父级应用程序。
Ncurses terminfo 数据库具有ms-terminal
Windows 终端应用程序的 TERM 定义,尽管xterm
或xterm-256color
“足够兼容”(这是大多数应用程序所理解的,因此这是大多数新终端试图模拟的)。
类似地,MinTTY(Cygwin 终端)mintty
在 Ncurses 中有 terminfo 文件,但也基本xterm
兼容。Windows 控制台(Conhost)可能会使用ms-vt100+
或ms-vt100-color
。
(话虽如此,运行的应用程序本地在 Windows 终端上通常无需 TERM 即可工作,要么是因为他们已经知道他们在 Windows 上运行,要么是因为他们假设整个世界都是与 xterm 兼容的,要么是因为他们首先不使用终端仿真(即他们使用旧的 Windows“控制台”API)。但是,当您“ssh”到另一台主机时,SSH 客户端应该发送一个要在服务器上设置的 TERM 值。)
答案2
TERM 广泛应用于基于unix的系统,但在 Windows 中未使用。您不需要设置它(我的 Windows 10 是一台相当标准的开发机器,没有它)。