Подсказка не обновляет ветвь git

Matlab может быть установлен как:

sudo apt-get install matlab-gdf dynare-matlab libpdl-io-matlab-perl matlab-support matlab-support-dev matlab2tikz
1
задан 24 March 2017 в 20:43

1 ответ

Это потому, что .bashrc читается только один раз: когда вы запускаете новую интерактивную оболочку без входа (например, когда вы открываете новый терминал). Таким образом, PS1 устанавливается при первом открытии терминала и никогда не изменяется.

Правильный способ сделать это (при условии, что ваши скрипты git-prompt и __git_ps работают так, как ожидалось) использовать PROMPT_COMMAND. Как объяснено в man bash:

   PROMPT_COMMAND
          If set, the value is executed as a command prior to issuing each
          primary prompt.

Вы хотите, чтобы __git_ps1 запускался до отображения каждой подсказки (поэтому после каждой команды вы запускаете, например, после cd). Поэтому вам нужно поместить его в PROMPT_COMMAND. Если ваш __git_ps1 - это то, что я думаю, это будет установка PS1 для вас. Вам просто нужно запускать его каждый раз, когда отображается подсказка. Итак, добавьте эту строку в свой ~/.bashrc:

PROMPT_COMMAND="$purple\u $green$(__git_ps1 "(%s)") $blue\W $no_color \$ "

Наконец, я не могу быть уверен, так как вы не показываете соответствующие сценарии, но я очень сомневаюсь, что (%s) делает смысл есть. Это просто напечатает строку %s. Если вам нужна дополнительная помощь, отредактируйте свой вопрос и i) включите оба __git_ps1 и /etc/bash_completion.d/git-prompt (или сообщите нам, как вы их установили, если они пришли из пакета Ubuntu), и ii) покажите нам, что должно выглядеть ваше приглашение как.

3
ответ дан 23 May 2018 в 00:19
  • 1
    Я обновил свой вопрос. Я знаю, что .bashrc читается только один раз, но, тем не менее, подсказка должна обновляться каждый раз. – Pepe 24 March 2017 в 20:46
  • 2
    @Pepe это не будет, если вы не будете использовать PROMP_COMMAND, как я объясню в своем ответе. Вы попробовали? – terdon♦ 24 March 2017 в 20:58
  • 3
    спасибо за ваш ответ, но вы ошибаетесь. Также% s не нужно. Я разместил решение ниже. – Pepe 25 March 2017 в 13:25

Другие вопросы по тегам:

Похожие вопросы: