Reputation: 101
I am able to show the git branch name in the shell prompt. But whenever I am using screen I am getting
bash: parse_git_branch: command not found
and git branch is not shown. Please help me get this in the screen sessions also.
I have following in my .bash_profile.
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/
}
export PS1="[\W\$(parse_git_branch)]$ "
I don't have .git-completion.bash
System specs:
Upvotes: 10
Views: 8503
Reputation: 2182
I had the same error in OS X High Sierra when switching to root or when starting to ssh-agent /bin/bash
I resolved it to put it in /etc/bashrc
with check if i am root
if [[ $UID == 0 ]]; then
PS1="\[\e[1;31;40m\]\u@\h \W\[\e[0m\]\$ "
else
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "
fi
Upvotes: 1
Reputation: 813
When you open your terminal, .bash_profile
is executed and therefore PS1
is defined. Then you execute screen, and screen reads the environment variable PS1
which includes a call to parse_git_branch
and tries to parse it. But, since screen didn't execute .bash_profile
the function parse_git_branch
is not defined inside screen.
Move the definition of PS1
to .bashrc
because both, screen and iTerm execute it.
Upvotes: 5
Reputation: 61
This is much simpler and avoids the unnecessary sed:
parse_git_branch () {
while read -r branch; do
[[ $branch = \** ]] && current_branch=${branch#* }
done < <(git branch 2>/dev/null)
[[ $current_branch ]] && printf ' [%s]' "$current_branch"
}
Upvotes: 3
Reputation: 51
I had the same issue when running under screen and was able to resolve by moving the definition of the parse_git_branch()
function from .bash_profile
to .bashrc
.
Upvotes: 5
Reputation: 29211
You are missing a '
at the end of your sed statement:
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="[\W\$(parse_git_branch)]$ "
Othewerise, it seems to work for me in bash-3.2
Upvotes: 2