Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 25 Jan 2012 23:26:44 -0500
From:      mikel king <mikel.king@olivent.com>
To:        Doug Poland <doug@polands.org>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Portability of shell scripts from other *nixes
Message-ID:  <38FBA444-16B3-4C38-8801-AB63E7AA5F7A@olivent.com>
In-Reply-To: <ac1be76b3dd10516e61861ae253b793f.squirrel@email.polands.org>
References:  <ac1be76b3dd10516e61861ae253b793f.squirrel@email.polands.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Jan 25, 2012, at 5:08 PM, Doug Poland wrote:

> Hello,
>=20
> I'm trying port some shell scripts to FreeBSD that were originally
> written on Darwin (OS X).
>=20
> The issue I'm having is the shebang line of the scripts in OS X is
> #!/bin/sh, and it turns out that is really an instance of bash, and
> the code contains some bashisms.  On FreeBSD I have bash in
> /usr/local/bin/bash.
>=20
> Is there an "easy/best" way to have a single shebang that works on
> both OS's?  I'd rather not change FreeBSD's bourne shell to bash with
> any symlinking of /usr/local/bin/bash to /bin/sh.
>=20
>=20
> --=20
> Regards,
> Doug


Mac OS X defaults to /bin/bash but things get weird because sh on mac is =
also bash. Funnily enough a complete separate binary and not a symlink. =
Anyway, this means things written for the Mac may not work directly on =
FreeBSD. What I mean is that bash3 syntax is not going to be backwardly =
compatible with sh. If you wish to retain the bashiness of the scripts =
then the easiest option would be to install the bash (3.x) port and use =
env to invoke the appropriate shell on each system.

Regards,
Mikel King
BSD News Network
http://bsdnews.net
skype: mikel.king
http://twitter.com/mikelking






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?38FBA444-16B3-4C38-8801-AB63E7AA5F7A>