2017-11-09 4 views
2

ich den Befehl leite:Erste Fehler: bash: parse_git_branch: Befehl nicht gefunden

sudo bash 

Aber ich immer einen Fehler auf meinem Terminal bekommen, die sagt,

bash: parse_git_branch: command not found 

Hier meine .bash_profile Datei

parse_git_branch() { 
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' 
} 

export PS1="\[email protected]\h \[\033[32m\]\w - \$(parse_git_branch)\[\033[00m\] $ " 

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM$ 

if [ -f ~/.git-completion.bash ]; then 
    . ~/.git-completion.bash 
fi 

export PATH=/usr/local/bin:/Applications/XAMPP/xamppfiles/bin:$PATH 
export PATH=/bin:/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH 
export EDITOR='subl -w' 



export JAVA_HOME=$(/usr/libexec/java_home) 
export JAVA_HOME=$(/usr/libexec/java_home) 
export JAVA_HOME=$(/usr/libexec/java_home) 

Vielen Dank im Voraus.

Antwort

4

Das Problem ist, dass parse_git_branch in .bash_profile definiert ist, aber nicht exportiert. Wenn Sie sudo bash laufen, es beginnt eine Nonlogin Schale, die .bashrc statt .bash_profile Quellen. PS1 wurde exportiert und ist in der neuen Shell definiert, aber parse_git_branch ist nicht.

Normalerweise würden Sie sowohl PS1 als auch parse_git_branch in .bashrc definieren und keine davon exportieren. macOS unterscheidet sich ein wenig von Linux, da ein Terminal-Emulator eine Login-Shell anstelle einer normalen interaktiven Shell startet. Eine gute Praxis ist, die Definitionen in .bashrc, dann Quelle .bashrc von .bash_profile zu setzen.

Hier ist, wie ich würde Ihre vorhandenen .bash_profile aufgeteilt:

In .bashrc:

parse_git_branch() { 
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' 
} 

PS1="\[email protected]\h \[\033[32m\]\w - \$(parse_git_branch)\[\033[00m\] $ " 

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM$ 

if [ -f ~/.git-completion.bash ]; then 
    . ~/.git-completion.bash 
fi 

In .bash_profile:

# Many of the paths you were adding to PATH should already be 
# there in the default configuration; run /usr/lib/path_helper 
# to see the default. 
PATH=/Applications/XAMPP/xamppfiles/bin:/usr/local/sbin:$PATH 
export EDITOR='subl -w' 
export JAVA_HOME=$(/usr/libexec/java_home) 

[[ -f ~/.bashrc ]] && source ~/.bashrc 
+0

Großartig! Es funktionierte! –

-2

Mit Blick auf Ihre Bash_profile, es scheint, Sie haben vergessen, das Stichwort Funktion vor parse_git_branch() {}

Versuchen Sie, auf,

function parse_git_branch() { 
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' 
} 

Danach hinzuzufügen, nachladen Ihr .bash_profile und sehen, ob es funktioniert.

Referenz: Functions in Bash.

+0

Hallo, mattias. Leider hat es nicht funktioniert. Ich bekomme immer den gleichen Fehler. –

+1

'Funktion' ist eine optionale' bash' Erweiterung; seine Verwendung wird nicht einmal empfohlen. – chepner

+0

(... und seine Angewohnheit, Dinge zu beraten/zu präsentieren/zu demonstrieren, die als schlechte Praxis angesehen werden, ist ein Teil davon, warum die Verbindung mit dem ABS verpönt ist). –