Изменение цвета sh в .bashrc

Изменение цвета sh в .bashrc

Я пытаюсь изменить цвет своей оболочки, к которой я подключаюсь с помощьюШпатлевка.

Когда я печатаю это

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

Я получаю именно то, что хочу. Все естьзеленыйи он применяется только для пользователя root, чтобы я мог отличить его от других пользователей.

Однако, когда я ввожу этот код(без "экспорта")в /root/.bashrc, я получаю этот эффект, когда меняю текущую оболочку на bash с помощью команды bash.

Пример:

пример

Как мне сделать свою оболочку зеленой, не переключаясь на «bash» каждый раз при подключении, т. е. как мне применить это и к оболочке по умолчанию?

Здесь используется Debian 8.3 (Jessie)

решение1

Проблема в том, ~/.bashrcчто он не считывается оболочками входа в систему, и, следовательно, он не считывается оболочкой, которую вы получаете при входе в систему через SSH.

Как вы уже заметили, ~/.profileсчитывается оболочками входа в систему, так что это способ задать цвет, но он не влияет на MOTD.

В Debian MOTD хранится в /etc/motd; вот команда, которая добавит правильные escape-последовательности в начало и конец файла:

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

Связанный контент