In Shell-Skripten, die für Komponententests mit dynamischen Bibliotheken in einem anderen Verzeichnis als dem typischen @rpath verwendet werden, konnte ich zuvor DYLD_FALLBACK_LIBRARY_PATH festlegen, um das Verzeichnis festzulegen, das die Bibliotheken enthält. Unter 10.11.1 scheint Bash Versuche zu ignorieren, diese Umgebungsvariable zu setzen:
$ sh -x testscript.sh
+ DYLD_FALLBACK_LIBRARY_PATH=/Users/something/testinglibs
+ export DYLD_FALLBACK_LIBRARY_PATH
+ exec printenv
und DYLD_FALLBACK_LIBRARY_PATH ist in der Ausgabe von printenv nicht vorhanden.
Ist dies ein sicherheitsrelevanter Hack in der Shell von 10.11? Ich konnte diese Änderung nicht in Manpages oder online finden.
Dies ist der in El Capitan eingeführte Systemintegritätsschutz
Dokumentation ist dabei von Apple
Grundsätzlich sind alle von Apple bereitgestellten ausführbaren OS X-Dateien geschützt. und (aus einem früheren Dokument)
Das Spawnen von untergeordneten Prozessen von Prozessen, die durch den Systemintegritätsschutz eingeschränkt sind, z. B. durch Starten eines Hilfsprozesses in einem Bündel mit NSTask oder Aufrufen des exec(2)-Befehls, setzt die Mach-Spezialports dieses untergeordneten Prozesses zurück. Alle Umgebungsvariablen für dynamische Linker (dyld), wie z. B. DYLD_LIBRARY_PATH, werden gelöscht, wenn geschützte Prozesse gestartet werden.
In diesem Fall ist sh geschützt
make check
auf El Capitan schreiben, wenn Shared Libs benötigt werden?
Saaru Lindestøkke
Kerl