Re: Portability of git shell scripts?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, May 04, 2016 at 08:17:38PM +0200, Armin Kunaschik wrote:

> I'm trying to compile/test/use git 2.8.2 on AIX 6.1 with no bash available.
> /bin/sh is a hard link to /bin/ksh which is a ksh88, a posix shell.
> Is this supposed to work?

We aim for a practical subset of Bourne shells, including bash, dash,
ash, ksh, etc. There's at least one Bourne-ish shell known not to work,
which is Solaris /bin/sh[1]. POSIX is usually a good guide, but we aim
for practical portability more than adhering strictly to the standards
document.

I've tested with mksh in the past (though it's possible that we've
introduced a regression since then). But I think we've run into problems
with ksh93[2]. I don't know about ksh88, or what construct it doesn't
like.  It may or may not be easy to work around.

> As an example: make test fails on nearly every t34* test and on tests
> which contain rebase.
> The installation of bash (and manually changing the shebang to
> /bin/bash) "fixes" all rebase test failures. So obviously git-rebase
> is not portable at some point.

Right. Any modern-ish Bourne shell will do, so moving to bash is one way
to fix it.

> Does it make any sense to put work into making these scripts portable,
> that is, work with posix shells?

Maybe. :) If you can find what it is that ksh88 is unhappy with, we can
see how painful it is to adapt to. But given my looking into ksh93 in
[2], I suspect it will be easier to just use a more modern shell.

> And, as last resort, is it possible to configure git use bash in some
> or all shell scripts?

You can set SHELL_PATH in your config.mak file.

-Peff

[1] Solaris /bin/sh doesn't even understand $(), so we declared it as
    hopeless long ago. I think most people just replace it with bash,
    but I suspect /usr/xpg6/bin/sh probably works, too.

[2] http://thread.gmane.org/gmane.comp.version-control.git/268657/focus=268666
--
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



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]