私はmacOSを使用しています。 . 単に始めに配置するだけでは機能せず、実行可能ビットは設定されません。私は私のスクリプトでこれを思い出しました。bash
zsh
sh
bash
sh
bash
zsh
#!/bin/zsh
shell=`ps -p $$ -oargs=|cut -d " " -f1`
if test `basename $shell` != 'zsh'
then
echo "Replacing shell with zsh"
exec /bin/zsh $0 $@
fi
echo "ECHO $1 $2"
これは働きます:
% bash test.sh aap noot
Replacing shell with zsh
ECHO aap noot
% zsh test.sh aap noot
ECHO aap noot
スクリプトが呼び出されるシェルに関係なく、zshを使用してスクリプトを実行することを強制するより良い/より強力で/よりエレガントなソリューションがあるかどうか疑問に思います。
答え1
あなたは基盤を構築することができますZSH_バージョン
#! /bin/zsh -
if [ -z "${ZSH_VERSION:-}" ]; then
exec zsh - "$0" "$@"
fi