Hem zsh hem de bash tarafından kaynaklı bir dosyada aşağıdaki kodu var.
if test $SHELLNAME = zsh ; then
lss() { l -l ${1:-.}/*(s,S,t); }
laf() { l ${1:-.}/.*(.); }
lad() { l -d ${1:-.}/.*(/); }
lsw() { l -ld ${1:-.}/.*(R,W,X.^ND/); }
fi
SHELLNAMEbir zshkabuk zsh ise ve bashkabuk darbe ise.
Yukarıdaki işlevlerin her biri zsh ile çalışan, ancak bash ile çalışmayan kod içerir.
Bu dosyayı kaynakladığımda, aşağıdaki hataları alıyorum.
bash: <filename>: line 67: syntax error near unexpected token `('
bash: <filename>: line 67: ` lss() { l -l ${1:-.}/*(s,S,t); }'
Şu anda evalbash'ın sözdizimi denetimini atlamak için kullanıyorum .
if test $SHELLNAME = zsh ; then
# Using eval makes sure bash can't try to syntax-check these functions.
eval 'lss() { l -l ${1:-.}/*(s,S,t); }'
eval 'laf() { l ${1:-.}/.*(.); }'
eval 'lad() { l -d ${1:-.}/.*(/); }'
eval 'lsw() { l -ld ${1:-.}/.*(R,W,X.^ND/); }'
fi
Bu soruna daha iyi bir çözüm var mı? (belki de kullanmayan eval)