Назад | Перейти на главную страницу

Измените значение PS1 для всех пользователей Bash

Я пытаюсь изменить значение подсказки для всех пользователей системы (переменная $ 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 опция может использоваться при запуске оболочки, чтобы запретить это поведение.