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)


~/.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

~/.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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.