Каков наилучший способ настройки командной строки Bash (также известной как переменная среды PS1)?

Каков наилучший способ настройки командной строки Bash (также известной как переменная среды PS1)?

Я пытаюсь добавить имя ветки Git в командную строку Bash, изменив PS1переменную следующим образом:

PS1=`echo "$PS1" | sed 's/\\\\\$ $/\$(__git_ps1)\\\\\$ /'`

И если я правильно понимаю, не рекомендуется обновлять ~/.bashrcдля персонализации. Все статьи, которые я нашел, предлагают обновлять либо .profileлибо .bash_profileдля таких целей. Поэтому я ищу идеальное место, чтобы поместить эту строку.

Вот места, которые я уже опробовал:

  • .profile: не получено отgnome-terminal
  • .bash_profile: не получено отgnome-terminal
  • .bash_login: не получено отgnome-terminal
  • .bash_aliases: работает, но не думаю, что PS1это как-то связано с псевдонимами

Я использую Ubuntu Desktop и работаю в gnome-terminalили byobu, поэтому мне нужно найти файл, который берется из источника при запуске bashв среде X. Затем я поискал .bashrcдругие файлы, которые он берет из источника после присвоения значения PS1. Есть .bash_aliasesи , /usr/share/bash-completion/bash_completionкоторые, по-моему, не подходят для этой цели.

Какие еще есть варианты? И как лучше всего настраивать приглашение Bash?

решение1

Согласно следующему руководству, .bashrcна самом деле это лучшее место для настройки $PS1:

Строка PS1 должна быть установлена ​​в .bashrc. Это связано с тем, что неинтерактивные оболочки bash прилагают все усилия, чтобы отключить PS1. На странице руководства bash рассказывается, что наличие или отсутствие PS1 является хорошим способом узнать, находится ли сеанс bash в интерактивном или неинтерактивном режиме (т. е. в режиме скрипта).

[...]

поэтому следует подчеркнуть, что PS1=..blah..должно быть в .bashrcи не .profile.

Источник:http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/setps.html

решение2

Я согласен с @sylvain-pineau, что его следует разместить в .bashrc.

Я использую скрипт оболочки git-prompt, который я разветвил на github. Он отлично работает с git, svn и hg. Он показывает, в какой ветке вы находитесь, какие файлы у вас новые, какие файлы были изменены (разными цветами) и статус вашей последней команды bash.

Скачать его можно так:

wget https://raw.githubusercontent.com/stalet/git-prompt/master/git-prompt.sh
chmod +x git-prompt.sh

Затем в .bashrc я использую тест, чтобы проверить, доступен ли мой скрипт git-prompt, а затем получаю его источник:

[[ -s ~/config/git-prompt.sh ]] && source ~/config/git-prompt.sh

Отказ от ответственности: я являюсь участником проекта git-prompt на GitHub.

Связанный контент