什么是“COLOR”环境变量?

什么是“COLOR”环境变量?

背后的历史是什么$COLOR,为什么没有人使用它,使用安全吗,以及它应该用来做什么。

  1. 为什么它COLOR="1"在我的“Linux v2 Debian VM 的 Windows 子系统”上?我的系统上没有任何 shell rc 脚本,除了一些自定义的alias.

  2. 为什么是GitHub 没有使用它,但这个混乱却是:NO_COLOR, CLICOLOR, CLICOLOR_FORCE?

有哪位明智的 Unix 大师吗?先感谢您。

答案1

正如您所看到的,这个领域没有标准化。有一些讨论(最近也有一些讨论)标准化一种环境,以便程序知道它们是否应该使用颜色,但这样的建议不能解决很多问题,而且只会创建新的环境变量。

因此,请检查每个程序以了解它们如何处理颜色。好的程序应该检查 TERM,然后询问终端的功能(使用库),而且还应该检查它们是否正在写入控制台或管道/文件。但是我们遇到了问题:有时如果我们发送到管道,处理不同的颜色是好的,但有时则不然。例如:我们可能希望将程序的结果通过管道传输到grep,并且可能 grep 将为匹配的字符串着色(但因此禁止第一个程序写入颜色)。另一方面,diff我们可能想要通过管道传递到less,因此我们需要 diff 来管道颜色,而不是显示它们。所以通用的环境变量解决方案并不完美。

微软不像 Unix 有自己的方式,所以一些可移植程序有第三种方式来解决问题,所以增加了混乱。

而且你的问题可能会带来额外的问题:为了有彩色提示,我们可以在你的 .bashrc 脚本上使用变量,过去我们泄露许多环境变量(rc 文件来自实际环境,而不是在新环境中执行)。因此,您可能会得到一个 COLOR 只是为了简化终端上颜色处理的逻辑(取决于您如何连接到它)。

所以这是一团糟。无论如何,Debian 的伟大政策之一(早期的 Linux 事情比我们想象的要混乱得多)是不需要任何环境变量来运行任何程序。所以忽略该环境变量即可。不需要任何东西。

因此:您应该检查每个程序(它们的手册页),每个程序都应该告诉您它们是否使用 COLOR,以及它们如何解释它。它不是标准化的,因此我们无法真正回答您。 (谷歌搜索site:manpages.debian.org "COLOR"并没有多大帮助,因为它会发现太多)。

相关内容