Ich bin gerade über ein Skript gestolpert, das in Bash, aber nicht in Zsh funktioniert:
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
das zweite if soll anscheinend je nach Kernel prüfen, ob $LD_LIBRARY_PATH
es ungleich null ist, oder ob $DYLD_LIBRARY_PATH
es ungleich null ist. Und dann entweder die jeweilige Variable setzen oder erweitern.
Wie kann ich dasselbe in zsh machen? Und gibt es eine Version, die in zsh und bash funktioniert?
Antwort1
Es scheint $(eval echo \$\{$library_path\})
zu funktionieren:
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
Es könnte jedoch eine elegantere Lösung geben.