Re: [PATCH] Abort early if not being sourced under bash.
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 8, 2008, 21:31 UTC
- Message-ID
- <7vprv7i19f.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <200802082310.34398.ville.skytta@iki.fi>
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" ]; thenI 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
fiat 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.