我正在尝试对控制台进行着色,并且在 root 中取得了以下成功.bash_profile
:
echo -en "\e]P7000000"
echo -en "\e]P0F0F0F0"
clear
问题是,这显然只会在 root 用户第一次登录时启动。有没有办法mingetty
自动设置正确的控制台颜色?建议的解决方案应该适用于 RHEL6 和 RHEL7(即 systemd),因为我的大多数系统都是如此。请注意,这是关于对常规控制台进行着色,而不是对终端仿真器或 SSH 进行着色(前者不相关,我同意后者被视为用户配置问题)。
答案1
你可以把文字按照评论中的建议将字符转义为/etc/issue
(红帽有时会这样做)。经过快速测试,这可行,但只能为文本。背景是无色的。在 vi 中,文本可能看起来像
^[]P7000000^[]P0F0F0F0\S
Kernel \r on an \m
结果是这样的:
如果清除屏幕,则颜色会填充窗口,例如,
^[]P7000000^[]P0F0F0F0^[[2J\S
Kernel \r on an \m
其中^[
是 ASCIIescape字符,在 vi 中使用controlV后跟转义字符插入。
修改/etc/issue
是比较安全的,只要ssh
出错时可以进机修复即可。 mingetty
在登录之前打印该文件;ssh
不去那里。
但是,您可能也想以/etc/motd
相同的方式进行修改(毕竟,那也被打印)。但这带来了一个问题。在你的脚本中,一旦你替换\e
为文字ASCII 转义字符
echo -en "\e]P7000000"
echo -en "\e]P0F0F0F0"
你会得到
escape]P7000000
escape]P0F0F0F0
转义序列标准 (ECMA-48) 规定,escape]开始一个操作系统命令这将以字符串终止符。 Linux 控制台的实现中没有。当尝试/etc/motd
使用 .ssh 来打印那些不正确终止的转义序列时,您可能会因与 ssh 连接而出现有趣的(令人困惑的)终端锁定xterm
。资源中有一个解决方法(至少对于 xterm)brokenLinuxOSC
。
进一步阅读: