LINUX.ORG.RU

Bash Promt exit code

 , ,


0

1

Всем привет! Есть удобный способ добавить индикатор статуса последней команды в терминале, например так:

__prompt_command() {
    local EXIT="$?"             # This needs to be first
    PS1=""

    local RCol='\[\e[0m\]'

    local Red='\[\e[0;31m\]'
    local Gre='\[\e[0;32m\]'
    local BYel='\[\e[1;33m\]'
    local BBlu='\[\e[1;34m\]'
    local Pur='\[\e[0;35m\]'

    if [ $EXIT != 0 ]; then
        PS1+="${Red}→${RCol}"      # Add red if exit code non 0
    else
        PS1+="${Gre}→${RCol}"
    fi

    PS1+=" ${BBlu}\w${RCol} "
}
PROMPT_COMMAND=__prompt_command # Func to gen PS1 after CMDs
Но проблема в том, что я использую ещё и bash-git-prompt (собственно там я и вижу LAST_COMMAND_STATE) и вместе эти вещи не работают вне каталогов .git.

Вот у меня вопрос — как сделать, чтобы не только в каталогах git работало. Можно изменить GIT_PROMPT_ONLY_IN_REPO, но как то не хочется, чтобы весь тот код был всегда и везде и строка приветствия нужна разная для репозитория и для не репозитория.

Спасибо всем, разобрался. Поправил немного файл ~/.bash-git-prompt/gitprompt.sh

diff --git a/gitprompt.sh b/gitprompt.sh
index b85da60..6c9fef3 100755
--- a/gitprompt.sh
+++ b/gitprompt.sh
@@ -321,8 +321,19 @@ function setGitPrompt() {
 
   local repo=$(git rev-parse --show-toplevel 2> /dev/null)
   if [[ ! -e "$repo" ]] && [[ "$GIT_PROMPT_ONLY_IN_REPO" = 1 ]]; then
-    # we do not permit bash-git-prompt outside git repos, so nothing to do
-    PS1="$OLD_GITPROMPT"
+    # Add status exit code to PS1 outside git repo
+    PS1=""
+    local ResetColor='\[\e[0m\]'
+    local Red='\[\e[0;31m\]'
+    local Green='\[\e[0;32m\]'
+    local Blue='\[\e[1;34m\]'
+
+    if [ $GIT_PROMPT_LAST_COMMAND_STATE != 0 ]; then
+        PS1+="${Red}→${ResetColor}"
+    else
+        PS1+="${Green}→${ResetColor}"
+    fi
+    PS1+=" ${Blue}\w${ResetColor} "
     return
   fi
 

conformist ★★★
() автор топика
Ответ на: комментарий от conformist

Спасибо всем, разобрался.

Всегда рады помочь. Обращайся.

ashot ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.