.bashrc で sh の色を変更する

.bashrc で sh の色を変更する

接続しているシェルの色を変更しようとしていますパテ

これを入力すると

export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h:\w\$ '

欲しいものを正確に手に入れる。すべてがこれは root ユーザーにのみ適用されるため、root と他のユーザーを区別できます。

しかし、このコードを入力すると(「エクスポート」なし)では/root/.bashrc、 コマンドを使用して現在のシェルを bash に変更すると、この効果が得られますbash

例:

例

接続するたびに「bash」に切り替えずにシェルを緑色にするにはどうすればよいでしょうか。つまり、これをデフォルトのシェルにも適用するにはどうすればよいでしょうか。

ここではDebian 8.3 (Jessie)が使用されています

答え1

問題は、~/.bashrcログイン シェルによって読み取られないことであり、したがって、SSH 経由でログインして取得するシェルによって読み取られません。

すでにお気づきのとおり、~/.profileこれはログイン シェルによって読み取られるため、色を設定する方法ですが、MOTD には影響しません。

Debian では、MOTD は に保存されます/etc/motd。ファイルの先頭と末尾に正しいエスケープ シーケンスを追加するコマンドを次に示します。

printf '\e[0;32m' | sudo perl -i -pe 'if($. == 1) { $_ = <STDIN>.$_ }' /etc/motd; printf '\e[0m' | sudo tee -a /etc/motd

スクリーンショット

\e[0;32m、最初に色を緑に設定し、\e[0m最後にすべての属性をリセットします。この方法では、MOTD はその後に印刷される内容に影響を与えずに変更されます。最後に属性をリセットしたくない場合は (MOTD の後に印刷された内容に影響を与えないようにするには)、最後のコマンドを削除するだけです。

printf '\e[0;32m' | sudo perl -i -pe 'if($. == 1) { $_ = <STDIN>.$_ }' /etc/motd

関連情報