Re: [PATCH] bash-completion: Print a useful error when called in a non-bash shell
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:49:13
Andrew Sayers [off-list ref] writes:
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 <redacted> ---
+# 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@vger.kernel.org:
I needed to read this twice to realize that majority of people who will
ever see this message on their screen are _not_ expected to send any bug
report to us. Also if the user's "full bash" groks <() indirection but
still fails to run completion script correctly, this message does not help
them to find where to file a bug report at all.
I do agree that there need to be a way to find that information for the
end users, especially for those who just use binary-packaged git given by
their distros, but this codepath is _not_ the place to do it.
How about replacing these with something simple like:
echo >&2 "You are not running full 'bash'; exiting." ; exit 127
+ BASH_VERSION: {$BASH_VERSION}
+ BASHOPTS: {$BASHOPTS}
+ SHELLOPTS: {$SHELLOPTS}
+ POSIXLY_CORRECT: {$POSIXLY_CORRECT}
+EOF
+ echo -n " command line: {"
+ tr '\0' ' ' < /proc/$$/cmdlineThis looks like a Linux-ism to me.