Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: zsh portable script



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 may as well be installed under 
/usr/local/bin/env.

But every unix should have a bourne shell compatible shell located at /bin/sh. 
You can use a bourne shell compatible code snippet and call zsh from it. If 
PATH contains zsh than this will do the trick.


  #!/bin/sh
  
  if [ -z "$ZSH_VERSION" ]; then
      ## searching PATH for zsh executable
      exec zsh $* < $0

      ## no zsh detected
      exit 1 
  fi
  
  ## zsh should be running now. do zsh stuff
  print "hello"

Attachment: signature.asc
Description: This is a digitally signed message part.



Messages sorted by: Reverse Date, Date, Thread, Author