Я пытаюсь изменить значение подсказки для всех пользователей системы (переменная $ PS1) на одно и то же значение.
У меня в файле / etc / ps1 хранится следующее:
PS1='`
if [ $? -eq 0 ];
then echo -n "\[\033[00;35m\]\u\[\033[01;32m\]@\[\033[00;35m\]\h\[\033[00;32m\](\[\033[01;35m\]\W\[\033[01;32m\])\[\033[00;32m\]\$";
else echo -n "\[\033[00;35m\]\u\[\033[01;31m\]@\[\033[00;35m\]\h\[\033[01;31m\](\[\033[35m\]\W\[\033[31m\])\[\033[00;31m\]\$";
fi`\[\033[0m\]'
Под моей учетной записью одного пользователя я могу добавить source /etc/ps1
в мой файл ~ / .profile он работает (что интересно, когда я добавил его в ~ / .bashrc, он не работал). Если я добавлю это в / etc / profile или /etc/bashrc.basrch, чтобы это произошло для всех пользователей, ничего не произойдет. Я растягиваю волосы, пытаясь заставить это работать. Это Debian 7.1.0 (Linux 3.2.46).
Добавьте измененную настройку PS1 в /etc/profile.d/custom_ps1.sh
. Файлы в /etc/profile.d
автоматически получены из /etc/profile
:
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
Это вызывается всякий раз, когда создается оболочка входа в систему. Из bash
справочная страница:
Когда bash вызывается как интерактивная оболочка входа или как неинтерактивная оболочка с
--login
вариант, он сначала читает и выполняет команды из файла/etc/profile
, если этот файл существует. После прочтения этого файла он ищет~/.bash_profile
,~/.bash_login
, и~/.profile
, в этом порядке, и считывает и выполняет команды из первой, которая существует и доступна для чтения. В--noprofile
опция может использоваться при запуске оболочки, чтобы запретить это поведение.