Re: [PATCH] Abort early if not being sourced under bash.
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:44:11
Ville Skyttä [off-list ref] writes:
quoted hunk
Subject: [PATCH] Abort early if not being sourced under bash. This way, the file can be safely sourced from profile files shared with non-bash shells, eg. dropped into /etc/profile.d like directories. Signed-off-by: Ville Skyttä <redacted> --- contrib/completion/git-completion.bash | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 4ea727b..3cde9f4 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash@@ -45,6 +45,8 @@ # git@vger.kernel.org # +[ -z "$BASH_VERSION" ] && return + __gitdir () { if [ -z "$1" ]; then
I do not particularly sympathize with the /etc/profile.d/
argument. Ditros can and should put a small script in there
that checks what /bin/sh it really is running and source the
real thing from elsewhere, perhaps /usr/share/git-core/,
appropriately.
However, even if you did so, there is another issue. One of my
hosts have a bash that does not know the "complete" command, and
logging into the host I get twenty-or-so "bash: complete:
command not found".
So
if bash "complete" would not work for this shell
then
__git_ps1 () { : dummy; }
return
fi
at the beginning may be needed even if you know we are running
bash.
Then people can safely say:
PS1=': \h \W$(__git_ps1 "/%s"); '
(or whatever git-completion.bash suggests these days) in their
start-up script.