ByteNoteByteNote
字

字节笔记本

2026年9月26日

tty7 界面没颜色?根因是 NO_COLOR=1 泄漏进了守护进程

API中转
¥120

tty7 窗格里 Grok 的界面突然只剩粗体和反色,而提示符还是彩色的——遇到这种情况,先去查 NO_COLOR 这个环境变量是从哪继承来的。tty7 本身一直能正常显示颜色,问题出在 Grok 看到这个变量后,主动不再输出颜色码。

现象:界面没色,提示符有色

Grok 启动时只要发现设置了 NO_COLOR,整个界面就退成粗体加反色。提示符之所以还保留彩色,是因为它自己写死了转义码,不看这个变量。所以「部分彩色、部分单色」这种组合,恰好说明终端的渲染能力没问题,是应用层在读环境变量后主动降级。

确认方法很简单,在出问题的窗格里执行:

bash
env | grep -iE 'NO_COLOR|CLICOLOR|COLORTERM|TERM'

如果看到 NO_COLOR=1,基本就锁定原因了。

根因:守护进程继承了工具环境

上次出问题的那个 tty7,是从 Grok 的工具进程里打开的。守护进程随之继承了工具环境里的三个变量:

  • NO_COLOR=1
  • GROK_AGENT=1
  • CLICOLOR=0

每个新窗格都从守护进程继承同一套环境,于是整个会话都是单色的。

处理:换干净的守护进程,声明真彩色

两步:

  1. 换掉带污染环境的守护进程。现在这个已经换过,当前环境是 TERM=xterm-256color、COLORTERM=truecolor,没有 NO_COLOR。
  2. 在 ~/.config/tty7/config.json 里加上 COLORTERM=truecolor。以后每个新窗格都会声明真彩色,Grok 会按 24 位色来画主题。

以后怎么启动

用 Dock、Spotlight,或者在 iTerm 里执行 open -a tty7 打开即可。

不要从 Grok 正在执行的命令里启动 tty7——那样工具环境又会把 NO_COLOR=1 带进守护进程,问题会原样复发。

相关文章

分享: