Zsh Mailing List Archive
Messages sorted by:
Re: zsh portable script
- X-seq: zsh-users 15195
- From: Thorsten Kampe <thorsten@xxxxxxxxxxxxxxxx>
- To: zsh-users@xxxxxxx
- Subject: Re: zsh portable script
- Date: Wed, 21 Jul 2010 10:34:54 +0200
- List-help: <mailto:email@example.com>
- List-id: Zsh Users List <zsh-users.zsh.org>
- List-post: <mailto:firstname.lastname@example.org>
- Mailing-list: contact zsh-users-help@xxxxxxx; run by ezmlm
- References: <1007130241570.5546@smasher> <201007121737.21296.joke@xxxxxxxxx> <i249q3$jk3$1@xxxxxxxxxxxxxxx> <305645C3-6FF2-4D54-AC28-372D60283E07@xxxxxxx>
* FranÃois Revol (Tue, 20 Jul 2010 16:07:32 +0200)
> Le 20 juil. 2010 Ã 15:53, Thorsten Kampe a Ãcrit :
> > * Joke de Buhr (Mon, 12 Jul 2010 17:37:19 +0200)
> >> On Monday 12 July 2010 16:46:22 Atom Smasher wrote:
> >>> on freebsd, zsh installs as /usr/local/bin/zsh. on linux (and most
> >>> other systems?) it installs as /usr/bin/zsh.
> >>> what's the best way to make zsh script portable between linux and
> >>> freebsd?
> >>> i could start the script with:
> >>> #!/usr/bin/env zsh
> >>> or i could specify that the script be executed as:
> >>> zsh script
> >>> is there a better way?
> >> Using env doesn't solve the problem either. There is no guarantee the "env"
> >> program is installed under /usr/bin/env.
> > It does solve the problem that's why it's used in (shell) scripting.
> No it does not.
> BeOS never had any /usr.
> Haiku doesn't either.
The question was "what's the best way to make zsh script portable
between linux and freebsd?" Why would the original poster care about OSs
which are either dead for ten years or haven't left alpha stage yet?
If you want to be generally "portable" then you wouldn't write a zsh
script in the first place: "When portability is an issue: you can rely
on the Bourne shell existing anywhere. Scripting languages like Perl and
even the newer shells like bash and zsh are potentially unavailable"
("From Bash to Z Shell" - Oliver Kiddle, Jerry Peek and Peter
Trying to create a script that would magically "run everywhere" is never
going to work. For a "real life" description see here:
"While the transition to sh and general UNIX compatibility has been a
bumpy ride, it has also been a tremendous learning experience. Creating
a single script that runs on all of these platforms has been very tricky
indeed, mainly because I simply don't have access to most of these
operating systems! Thankfully, keychain users from around the globe do,
and many have provided great assistance in identifying compatibility
problems and submitting patches to fix them."
All these compatibility changes come with a heavy price: they make the
code much less readable (as described under "Shell compatibility
The lesson here is: if you want a Zsh script that runs on the major
Linux distributions and on FreeBSD then create one that does exactly
that. Don't try to "over-engineer" to make it run everywhere if you
don't have the ressources (like lots of contributors) and especially:
dont't try to make it run on a platform you don't have access to (and on
which the script is never supposed to run, anyway).
Messages sorted by: