Impossibile impostare DYLD_FALLBACK_LIBRARY_PATH nella shell su OSX 10.11.1

10

Negli script di shell utilizzati per il test delle unità con librerie dinamiche in una directory diversa dal tipico @rpath, in precedenza sono stato in grado di impostare DYLD_FALLBACK_LIBRARY_PATH per impostare la directory contenente le librerie. Sotto 10.11.1, bash sembra ignorare i tentativi di impostare questa variabile d'ambiente:

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

e DYLD_FALLBACK_LIBRARY_PATH non sono presenti nell'output di printenv.

Si tratta di un hack relativo alla sicurezza nella shell di 10.11? Non sono stato in grado di trovare questa modifica documentata nelle pagine man o online.

    
posta Guy 27.10.2015 - 14:11
fonte

1 risposta

7

Questa è la System Integrity Protection introdotta in El Capitan

La documentazione è in questo di Apple

Fondamentalmente tutti gli eseguibili OS X forniti da Apple sono protetti. e (da un precedente documento)

Spawning children processes of processes restricted by System Integrity Protection, such as by launching a helper process in a bundle with NSTask or calling the exec(2) command, resets the Mach special ports of that child process. Any dynamic linker (dyld) environment variables, such as DYLD_LIBRARY_PATH, are purged when launching protected processes.

In questo caso sh è protetto

    
risposta data 27.10.2015 - 14:45
fonte