5

Я пытаюсь настроить приглашение оболочки, вставив следующую строку в .bashrc в моем домашнем каталоге:

export PS1="\[\e[01;36m\][\u]\[\e[0m\] \[\e[01;37m\]\W\[\e[0m\] $ "

Я сохраняю этот файл и заново открываю bash, но он не меняется. Когда я запускаю команду echo $PS1 , консоль показывает

\h:\w$

которая является приглашением по умолчанию. Я огляделся .bashrc и не вижу нигде устанавливаемой переменной среды PS1 , кроме вставленной мной строки, показанной выше.

Это работает на моей локальной машине, но с моей учетной записью на удаленном сервере это не будет зависать. Как заставить пользовательское приглашение вступить в силу?

Спасибо!

1 ответ1

5

Проблема здесь заключается в разнице между логином и интерактивными оболочками. Смотрите здесь для краткого изложения.

~/.bashrc читается только при запуске интерактивной (не входящей в систему) оболочки. Когда вы запускаете ssh на удаленном компьютере, вы запускаете оболочку входа в систему, поэтому вместо нее читаются ~/.bash_profile ~/.bash_login или ~/.profile (в таком порядке). Вы можете проверить это, запустив bash после входа на удаленный сервер, который запустит интерактивную оболочку, прочитает ~/.bashrc появится ваше измененное приглашение.

Чтобы изменить подсказку, которая появляется при ssh , установите $PS1 в ~/.bash_profile:

export PS1="\[\e[01;36m\][\u]\[\e[0m\] \[\e[01;37m\]\W\[\e[0m\] $ "

В качестве альтернативы вы можете вызвать ~/.bashrc из ~/.bash_profile или ~/.profile:

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi

if [ "$BASH" ]; then полезно при использовании ~/.profile так как он будет читаться не-bash-оболочками.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .