
Я пытаюсь изменить цвет своей оболочки, к которой я подключаюсь с помощьюШпатлевка.
Когда я печатаю это
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