threads / patch / 11974

patchAbort early if not being sourced under bash.

Subject: [PATCH] Abort early if not being sourced under bash.

## tl;dr

3 messages between Feb 8, 2008 and Feb 8, 2008. Diffs are folded; open one to read it.

replies: 2people: 3as markdown or json

Ville Skyttä· Feb 8, 2008, 21:10 UTC · lore
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ä <ville.skytta@iki.fi>
---
 contrib/completion/git-completion.bash |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
Show changes to contrib/completion/git-completion.bash +2 −0
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
-- 
1.5.3.8
Johannes Schindelin· Feb 8, 2008, 21:14 UTC · re: Ville Skyttä · lore

Re: [PATCH] Abort early if not being sourced under bash.

Hi,
On Fri, 8 Feb 2008, Ville Skyttä wrote:
> Subject: [PATCH] Abort early if not being sourced under bash.

Please do not repeat the subject. And prepend "git-completion: " so people can see from the subject already what this patch is about.

As for the patch, yeah, I think it should go in.

Ciao, Dscho

Junio C Hamano· Feb 8, 2008, 21:31 UTC · re: Ville Skyttä · lore

Re: [PATCH] Abort early if not being sourced under bash.

Ville Skyttä <ville.skytta@iki.fi> writes:
Show 23 quoted lines
> 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ä <ville.skytta@iki.fi>
> ---
>  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.

← back to recent threads