Ändern der SH-Farbe in .bashrc

Ändern der SH-Farbe in .bashrc

Ich versuche, die Farbe meiner Shell zu ändern, mit der ich mich verbindeKitt.

Wenn ich das hier tippe

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

Ich bekomme genau das, was ich will. Alles istGrünund es wird nur für den Root-Benutzer angewendet, sodass ich Root von anderen Benutzern unterscheiden kann.

Wenn ich diesen Code jedoch eingebe(ohne "Export")in /root/.bashrcerhalte ich diesen Effekt, wenn ich die aktuelle Shell mit dem Befehl in Bash ändere bash.

Beispiel:

Beispiel

Wie kann ich meine Shell grün machen, ohne bei jeder Verbindung zu „Bash“ zu wechseln, d. h. wie kann ich dies auch auf die Standard-Shell anwenden?

Hier kommt Debian 8.3 (Jessie) zum Einsatz

Antwort1

Das Problem besteht darin, ~/.bashrcdass es von Anmelde-Shells nicht gelesen wird und daher auch nicht von der Shell, die Sie durch die Anmeldung über SSH erhalten.

Wie Sie bereits bemerkt haben, ~/.profilewird es von Login-Shells gelesen. Auf diese Weise lässt sich die Farbe festlegen, es wirkt sich jedoch nicht auf MOTD aus.

Unter Debian wird die MOTD in gespeichert /etc/motd; hier ist ein Befehl, der die richtigen Escape-Sequenzen am Anfang und am Ende der Datei anfügt:

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

Bildschirmfoto

Dadurch \e[0;32mwird die Farbe zu Beginn auf Grün gesetzt und \e[0mam Ende werden alle Attribute zurückgesetzt. Auf diese Weise wird das MOTD geändert, ohne dass dies Auswirkungen auf den nachfolgenden Ausdruck hat. Wenn Sie die Attribute am Ende nicht zurücksetzen möchten (was Auswirkungen auf den Ausdruck nach dem MOTD hat), lassen Sie einfach den letzten Befehl weg:

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

verwandte Informationen