我的 ssh 配置文件已接受环境设置为:
AcceptEnv LANG LC_*
我有点困惑,为什么当我通过某些客户端 ssh 时,我的 TERM 变量被设置为 xterm256-color,而其他客户端 TERM 被设置为 vt100。我的 .bashrc 和 /etc/profile 没有任何设置 TERM 变量的内容。
答案1
$TERM
是特殊的——它不是作为环境变量发送的(这对于非 Unix 系统来说毫无意义),而是在建立伪终端通道时作为特殊的“终端类型”字段发送。RFC 4254§6.2。
6.2 请求伪终端
可以通过发送以下消息为会话分配伪终端。
byte SSH_MSG_CHANNEL_REQUEST uint32 recipient channel string "pty-req" boolean want_reply string TERM environment variable value (e.g., vt100) uint32 terminal width, characters (e.g., 80) uint32 terminal height, rows (e.g., 24) uint32 terminal width, pixels (e.g., 640) uint32 terminal height, pixels (e.g., 480) string encoded terminal modes
答案2
$TERM
由终端,也就是你正在运行的 shell 的父进程本地。应用程序使用它来确定终端的功能,例如它是否支持彩色。将其转发到您连接的任何其他主机非常有用,因为否则他们将失去有关最终用户终端功能的这一知识。