저는 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