2

Я следовал указаниям, указанным Стивом Лошем, чтобы раскрасить и отформатировать мою подсказку bash, однако подсказка не обновляется.

Моя строка export PS1 выглядит так:

export PS1="\n\[$txtgrn\]\w\[$txtrst\]$(hg_in_repo)\[$txtylw\]$(hg_branch)\[$txtrst\]$(hg_dirty)\n\[$txtcyn\]\$\[$txtrst\] "

Да, все эти $txtxxx определены.

Все работает как положено, как внутри, так и вне репозитория, но мне нужно постоянно получать source ~/.bash_profile чтобы получить приглашение на обновление.

Я что-то пропустил? Есть ли способ заставить его обновляться каждый раз, когда я выполняю команду, как он демонстрирует на скриншоте ниже по странице?

Я использую Mac OSX 10.5 (Leopard) с терминалом и / или iTerm.

1 ответ1

1

Вам нужно экранировать знаки доллара, чтобы подстановка команд не выполнялась до тех пор, пока не будет выведено приглашение:

export PS1="\n\[$txtgrn\]\w\[$txtrst\]\$(hg_in_repo)\[$txtylw\]\$(hg_branch)\[$txtrst\]\$(hg_dirty)\n\[$txtcyn\]\$\[$txtrst\] "

Или, если вы заметили на этой странице, он использует одинарные кавычки, что также предотвращает расширение подстановки команд до тех пор, пока не будет выдано приглашение:

export PS1='\n\[$txtgrn\]\w\[$txtrst\]$(hg_in_repo)\[$txtylw\]$(hg_branch)\[$txtrst\]$(hg_dirty)\n\[$txtcyn\]\$\[$txtrst\] '

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