Linux
是否可以在登錄前發送顏色程式碼轉義序列?
我正在嘗試為控制台著色,並且在 root 的以下內容中取得了成功
.bash_profile
:echo -en "\e]P7000000" echo -en "\e]P0F0F0F0" clear
問題是,這顯然只會在 root 使用者第一次登錄時啟動。有沒有辦法
mingetty
自動設置正確的控制台顏色?建議的解決方案應該適用於 RHEL6 和 RHEL7(即 systemd),因為這就是我的大多數係統。請注意,這是關於為正常控制台著色,而不是終端仿真器或 SSH(前者不相關,我同意後者被視為使用者配置問題)。
您可以按照評論中的建議將文字轉義字元放入
/etc/issue
(Red Hat 有時會這樣做)。在快速測試中,這是可行的,但只會為text 著色。背景是無色的。在 vi 中,文本可能看起來像^[]P7000000^[]P0F0F0F0\S Kernel \r on an \m
結果是這樣的:
如果您清除螢幕,則顏色會填充視窗,例如,
^[]P7000000^[]P0F0F0F0^[[2J\S Kernel \r on an \m
其中
^[
是 ASCIIescape
字元,在 vi 中使用control``V
後跟轉義字元插入。修改
/etc/issue
是比較安全的,只要ssh
在出錯的時候能進機器修就好了。mingetty
在登錄前列印該文件;ssh
不去那裡。但是,您可能也想以
/etc/motd
相同的方式進行修改(畢竟,這也是列印出來的)。但這會帶來一個問題。在您的腳本中,一旦您替換\e
為文字ASCII 轉義字元echo -en "\e]P7000000" echo -en "\e]P0F0F0F0"
你會得到
escape``]P7000000
escape``]P0F0F0F0
轉義序列的標準 (ECMA-48) 表示
escape``]
以作業系統命令開頭,並以字元串 terminator 結尾。Linux 控制台的實現中沒有。當您嘗試/etc/motd
使用那些不正確終止的轉義序列使用xterm
. 資源中有一個解決方法(至少對於 xterm)brokenLinuxOSC
。進一步閱讀: