zsh와 bash가 모두 제공하는 파일에 다음 코드가 있습니다.
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
SHELLNAME
인 zsh
쉘이 zsh을하고있는 경우 bash
쉘이 bash는 경우.
위의 각 함수에는 zsh에서는 작동하지만 bash에서는 작동하지 않는 코드가 포함되어 있습니다.
이 파일을 소싱하면 다음과 같은 오류가 발생합니다.
bash: <filename>: line 67: syntax error near unexpected token `('
bash: <filename>: line 67: ` lss() { l -l ${1:-.}/*(s,S,t); }'
현재 eval
bash의 구문 검사를 우회 하는 데 사용 하고 있습니다.
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
이 문제에 대한 더 나은 해결책이 있습니까? (아마도 사용하지 않는 것 eval
)