Detect whether the shell supports process substitution with <() Shells that fail the test will not be able to load git-completion.bash If a bad shell is found, print a warning which gives the user as much debugging information as possible. This was added in response to a bug report on the git mailing list: http://permalink.gmane.org/gmane.comp.version-control.git/151723 Signed-off-by: Andrew Sayers <andrew-git@xxxxxxxxxxxxxxx> --- My thanks to solsTiCe d'Hiver for reporting this bug. contrib/completion/git-completion.bash | 25 +++++++++++++++++++++++++ 1 files changed, 25 insertions(+), 0 deletions(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 6756990..3bbb4da 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -96,6 +96,31 @@ __gitdir () fi } +# Check in case we were called with something like "sh git-completion.bash": +$( + exec 2>/dev/null + $(exec < <( )) + ) +if [[ 0 -ne $? ]] +then + cat <<EOF + +ERROR: you don't seem to be running a full bash shell. +git-completion.bash is probably about to fail with a syntax error. +If you are sure that your system is calling git-completion.bash from a bash, +then please include the following in a bug report to git@xxxxxxxxxxxxxxx: + + BASH_VERSION: {$BASH_VERSION} + BASHOPTS: {$BASHOPTS} + SHELLOPTS: {$SHELLOPTS} + POSIXLY_CORRECT: {$POSIXLY_CORRECT} +EOF + echo -n " command line: {" + tr '\0' ' ' < /proc/$$/cmdline + echo "}" + echo +fi + # stores the divergence from upstream in $p # used by GIT_PS1_SHOWUPSTREAM __git_ps1_show_upstream () -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html