No se puede establecer DYLD_FALLBACK_LIBRARY_PATH en shell en OSX 10.11.1

9

En los scripts de shell utilizados para la prueba de unidad con bibliotecas dinámicas en un directorio distinto al @rpath típico, anteriormente he podido configurar DYLD_FALLBACK_LIBRARY_PATH para configurar el directorio que contiene las bibliotecas. Bajo 10.11.1, bash parece ignorar los intentos de establecer esta variable de entorno:

$ sh -x testscript.sh
+ DYLD_FALLBACK_LIBRARY_PATH=/Users/something/testinglibs
+ export DYLD_FALLBACK_LIBRARY_PATH
+ exec printenv

y DYLD_FALLBACK_LIBRARY_PATH no están presentes en la salida de printenv.

¿Se trata de un truco relacionado con la seguridad en el shell 10.11? No he podido encontrar este cambio documentado en páginas de manual o en línea.

    
pregunta Guy 27.10.2015 - 14:11

1 respuesta

6

Esta es la protección de integridad del sistema introducida en El Capitán

La documentación está en this de Apple

Básicamente, todos los ejecutables OS X suministrados por Apple están protegidos. y (de un documento anterior)

  

La generación de procesos secundarios de procesos restringidos por System Integrity Protection, como iniciar un proceso auxiliar en un paquete con NSTask o llamar al comando exec (2), restablece los puertos especiales de Mach de ese proceso secundario. Todas las variables de entorno del enlazador dinámico (dyld), como DYLD_LIBRARY_PATH, se eliminan al iniciar procesos protegidos.

En este caso, sh está protegido

    
respondido por el Mark 27.10.2015 - 14:45

Lea otras preguntas en las etiquetas