Dans les scripts shell utilisés pour les tests unitaires avec les bibliothèques dynamiques dans un répertoire autre que le @rpath typique, j'ai déjà pu définir DYLD_FALLBACK_LIBRARY_PATH pour définir le répertoire contenant les bibliothèques. Sous 10.11.1, bash semble ignorer les tentatives de définition de cette variable d'environnement:
$ sh -x testscript.sh
+ DYLD_FALLBACK_LIBRARY_PATH=/Users/something/testinglibs
+ export DYLD_FALLBACK_LIBRARY_PATH
+ exec printenv
et DYLD_FALLBACK_LIBRARY_PATH n'est pas présent dans la sortie de printenv.
Est-ce un hack lié à la sécurité dans le shell de 10.11? Je n'ai pas pu trouver cette modification documentée dans les pages de manuel ou en ligne.
Réponses:
Il s'agit de la protection de l'intégrité du système introduite dans El Capitan
La documentation est dans ce d'Apple
Fondamentalement, tous les exécutables OS X fournis par Apple sont protégés. et (à partir d'un document antérieur)
Dans ce cas, sh est protégé
la source
make check
sur El Capitan lorsque des bibliothèques partagées sont nécessaires?