W skryptach powłoki używanych do testowania jednostek z dynamicznymi bibliotekami w katalogu innym niż typowy @rpath, wcześniej byłem w stanie ustawić DYLD_FALLBACK_LIBRARY_PATH, aby ustawić katalog zawierający biblioteki. Pod 10.11.1 bash wydaje się ignorować próby ustawienia tej zmiennej środowiskowej:
$ sh -x testscript.sh
+ DYLD_FALLBACK_LIBRARY_PATH=/Users/something/testinglibs
+ export DYLD_FALLBACK_LIBRARY_PATH
+ exec printenv
a DYLD_FALLBACK_LIBRARY_PATH nie występuje w wydruku printenv.
Czy to hack związany z bezpieczeństwem w powłoce 10.11? Nie udało mi się znaleźć tej zmiany udokumentowanej na stronach man lub online.
Odpowiedzi:
Jest to ochrona integralności systemu wprowadzona w El Capitan
Dokumentacja jest w to od Apple
Zasadniczo wszystkie pliki wykonywalne Apple OS X są chronione. i (z wcześniejszego dokumentu)
W tym przypadku sh jest chroniony
źródło
make check
na El Capitan, kiedy potrzebne są współdzielone biblioteki?