我只是将它添加到我的.bashrc以获得彩色输出less:
# Colorize less man pages.
export LESS_TERMCAP_md=$'\e[01;34m'
export LESS_TERMCAP_us=$'\e[01;33m'
export LESS_TERMCAP_so=$'\e[01;44;37m'
export LESS_TERMCAP_mb=$'\e[01;31m'
export LESS_TERMCAP_mr=$'\e[01;35m'
export LESS_TERMCAP_me=$'\e[00m'
export LESS_TERMCAP_ue=$'\e[00m'
export LESS_TERMCAP_se=$'\e[00m'
Run Code Online (Sandbox Code Playgroud)
...现在突然某些命令(似乎与显示环境变量有关)产生与这些新设置匹配的颜色输出。我逃避错了吗?还是这是故意的行为?我尝试了其他一些转义变体,但它们不适用于less.
例如,这是一个env命令的屏幕截图。

php -i 也有彩色输出,但仅限于环境变量部分。

这是正常行为。这些环境变量包含导致终端更改其前景色的转义序列。当任何程序输出它们时,无论是 itless还是env.
这些变量需要包含实际的转义字符,less 不会对它们进行任何后处理。
\n\n通常你可以在lesskey 文件中放入 less 配置变量,但这对变量不起作用LESS_TERMCAP_xx,因为 less 在读取 lesskey 文件之前读取它们(从 less 444 开始)。所以你别无选择,只能将它们放入环境中。
如果您希望这些变量仅适用于man的其他用途less,则可以使用别名man将PAGER变量设置为设置环境变量的包装器脚本。
#!/bin/sh\nescape=\xe2\x90\x9b # a literal escape character\nexport LESS_TERMCAP_md=$escape\'[01;34m\'\n\xe2\x80\xa6\nexec less "$@"\nRun Code Online (Sandbox Code Playgroud)\n\n#!/bin/bash(或者,在第一行使用,您可以使用#\'\\e\'语法来获取转义字符。在/bin/sh破折号为的系统上,使用/bin/sh稍快,尽管在实践中可能并不明显。)
调用此脚本less-color,并将其添加alias man=\'PAGER=less-color man\'到您的~/.bashrc或~/.zshrc. 在某些系统上,您可以通过设置环境变量man来指示使用不同的分页器,而不是创建别名MANPAGER:export MANPAGER=less-color在您的~/.profile.