Zmiana koloru sh w .bashrc

1

Próbuję zmienić kolor mojej powłoki, z którą łączę się za pomocą Putty .

Kiedy to piszę

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

Dostaję dokładnie to, czego chcę. Wszystko jest zielone i dotyczy tylko użytkownika root, dzięki czemu mogę odróżnić roota od innych użytkowników.

Jednak, kiedy mogę umieścić ten kod (bez „eksport”) w /root/.bashrc, uzyskać ten efekt przy zmianie bieżącej powłoki bash za pomocą polecenia bash.

Przykład:

przykład

Jak mogę zmienić kolor powłoki na zielony bez przełączania się na „bash” za każdym razem, gdy się łączę, tj. Jak mogę zastosować to również do domyślnej powłoki?

Tutaj używany jest Debian 8.3 (Jessie)

bytecode77
źródło
~/.bashrcczyta Bash, jakiej powłoki używasz?
Kos
echo $SHELLzwraca /bin/bash, więc oczywiście używam bash. Dlaczego więc to nie działa?
bytecode77
Okej, teraz podszedłem bliżej. Kiedy tworzę plik o nazwie .profilez zawartością . ~/.bashrc, otrzymuję zieloną powłokę, ale tekst nad pierwszym monitem wprowadzania jest nadal szary. Czy istnieje sposób na rozwiązanie tego problemu?
bytecode77
1
Tak, ~/.bashrcjest odczytywany tylko przez powłoki niezalogowane, ~/.profilejest odczytywany przez powłoki logowania. Umieszczenie go /etc/profilezamiast tego powinno również zmienić kolor MOTD.
Kos
Czy możesz podać odpowiedź z opisem, gdzie dokładnie umieścić i uczynić wszystko (w tym MOTD) zielonym, ale tylko dla użytkownika root?
bytecode77

Odpowiedzi:

2

Problem ~/.bashrcnie jest odczytywany przez powłoki logowania, a zatem nie jest odczytywany przez powłokę, którą otrzymujesz, logując się przez SSH.

Jak już zauważyłeś, ~/.profilejest odczytywany przez powłoki logowania, więc jest to sposób na ustawienie koloru, ale nie wpływa to na MOTD.

W Debianie plik MOTD jest przechowywany w /etc/motd; oto polecenie, które doda poprawne sekwencje specjalne na początku i na końcu pliku:

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

zrzut ekranu

\e[0;32mUstawi kolor zielony na początku, \e[0mzresetuje wszystkie atrybuty na końcu; w ten sposób MOTD jest zmieniany bez wpływu na to, co zostanie wydrukowane po; jeśli nie chcesz resetować atrybutów na końcu (wpływających na to, co jest drukowane po MOTD), po prostu upuść ostatnie polecenie:

printf '\e[0;32m' | sudo perl -i -pe 'if($. == 1) { $_ = <STDIN>.$_ }' /etc/motd
kos
źródło
~/.profilebył bardzo pomocny. Nie ustawię jednak koloru MOTD, ponieważ chcę zielony kolor tylko dla użytkownika root. Ale gdy profil jest ustawiony na zielony, jest to najbliższe temu, co chciałem osiągnąć. +1
bytecode77