コンソールに色を付けようとしていますが、rootの.bash_profile
で次のように成功しています。
echo -en "\e]P7000000"
echo -en "\e]P0F0F0F0"
clear
問題は、これは明らかにrootユーザーが最初にログインしたときにのみ開始されることです。mingetty
を取得して適切なコンソールの色を自動的に設定する方法はありますか?提案されたソリューションは、RHEL6およびRHEL7(つまり、systemd)で機能するはずです。これは、私のシステムの大部分がそれであるためです。これは通常のコンソールの色付けに関するものであり、ターミナルエミュレーターやSSHではないことに注意してください(前者は関係ありません。後者はユーザー構成の問題と見なされます)。
コメントで提案されているように、literalエスケープ文字を/etc/issue
に入れることができます(Red Hatがこれを行う場合があります)。簡単なテストでは、これは機能しますが、textにのみ色を付けます。背景は無着色です。 viでは、テキストは次のようになります。
^[]P7000000^[]P0F0F0F0\S
Kernel \r on an \m
そしてこのような結果:
画面をクリアすると、色がウィンドウ全体に表示されます。例:
^[]P7000000^[]P0F0F0F0^[[2J\S
Kernel \r on an \m
ここで、^[
はASCII escape 文字、を使用してviに挿入 controlV エスケープ文字が続きます。
/etc/issue
を変更することは、間違いを犯したときにマシンにssh
して修復できる限り、比較的安全です。 mingetty
は、ログイン前にそのファイルを出力します。 ssh
はそこに行きません。
ただし、同じ方法で/etc/motd
も変更したくなるかもしれません(結局のところ、thatも出力されます)。しかし、それは問題を引き起こします。スクリプトで、\e
をliteralASCIIエスケープ文字に置き換えたら
echo -en "\e]P7000000"
echo -en "\e]P0F0F0F0"
あなたが得るだろう
escape]P7000000
escape]P0F0F0F0
エスケープシーケンスの標準(ECMA-48)には、 escape]オペレーティングシステムコマンドで始まり、文字列ターミネータで終わります。 Linuxコンソールの実装には何もありません。 xterm
を使用して不適切に終了したエスケープシーケンスで/etc/motd
を出力しようとすると、sshに接続することで興味深い(不可解な)端末ロックアップを取得できます。 brokenLinuxOSC
リソースには(少なくともxtermの)回避策があります。
参考文献: