방금 bash에서는 작동하지만 zsh에서는 작동하지 않는 스크립트를 우연히 발견했습니다.
if [ Darwin = `uname` ]; then
library_path=DYLD_LIBRARY_PATH
else
library_path=LD_LIBRARY_PATH
fi
if [ -z "${!library_path}" ]; then
eval ${library_path}=${thisdir}/lib64:${thisdir}/lib; export ${library_path}
else
eval ${library_path}=${thisdir}/lib64:${thisdir}/lib:${!library_path}; export ${library_path}
fi
두 번째 if는 커널에 따라 if가 $LD_LIBRARY_PATH
0이 아닌지 또는 if가 0이 아닌지 여부를 분명히 테스트해야 합니다. $DYLD_LIBRARY_PATH
그런 다음 해당 변수를 설정하거나 확장합니다.
zsh에서 동일한 작업을 어떻게 수행할 수 있습니까? zsh와 bash에서 작동하는 버전이 있나요?
답변1
작동하는 것 같습니다 $(eval echo \$\{$library_path\})
:
if [ Darwin = `uname` ]; then
library_path=DYLD_LIBRARY_PATH
else
library_path=LD_LIBRARY_PATH
fi
if [ -z $(eval echo \$\{$library_path\}) ]; then
eval ${library_path}=${thisdir}/lib64:${thisdir}/lib; export ${library_path}
else
eval ${library_path}=${thisdir}/lib64:${thisdir}/lib:$(eval echo \$\{$library_path\}); export ${library_path}
fi
더 우아한 해결책이 있을 수도 있습니다.