Home > Back-end >  Adding to $PS1 variable on Git Bash for Windows using ~/.bash_profile causes an issue with __git_ps1
Adding to $PS1 variable on Git Bash for Windows using ~/.bash_profile causes an issue with __git_ps1

Time:08-01

So I am trying to customize the PS1 value to add a check mark or x to the prompt depending on the result of the previous command. Surprisingly I got that part to work fine.

However, it has broken the part of the prompt that shows the Git branch when viewing a Git repository.

Here is the previous PS1 value:

user@PC MINGW64 ~/Git
$ echo $PS1
\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$

and here is the new ~/.bash_profile script that breaks it:

function nonzero_return() {
    RETVAL=$?
    if [[ $RETVAL -ne 0 ]]
    then
        echo "❌ ($RETVAL)"
    else
        echo "✅"
    fi
}

export PS1="\[\e[31m\]\`nonzero_return\`\[\e[m\]\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$"

Here is an example of the old prompt versus the new one:

user@PC MINGW64 ~/Git/docker-brew-ubuntu-core (dist-amd64)
$


✅
user@PC MINGW64 ~/Git/docker-brew-ubuntu-core
$


❌ (127)
user@PC MINGW64 ~/Git/docker-brew-ubuntu-core
$

CodePudding user response:

I think you want to use single quotes when assigning to PS1, and loose the backslashes before backticks. Also PS1 shouldn’t be exported:

PS1='\[\e[31m\]`nonzero_return`[...]'

Also, make RETVAL local in your helper function, otherwise it may interfere with other scripts, ie:

local RETVAL=$?

CodePudding user response:

I'm going to steal that prompt, I really like it!

You just need to escape the backticks around __git_ps1:

export PS1="\[\e[31m\]\`nonzero_return\`\[\e[m\]\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]\`__git_ps1\`\[\033[0m\]\n$"

The difference is

...\`__git_ps1\`...

instead of

...`__git_ps1`...

in the export statement.

  • Related