/ / bash export ne fonctionne pas pour une seule variable - bash

exportation bash ne fonctionne pas pour une seule variable - bash

Parfois, lorsque j'exporte dans bash, cela ne donne pas d'erreur, mais la variable d'environnement n'est pas non plus définie. Voici ce que je veux dire:

Cela marche:

bash-3.2$ export DYLD=$ABC_HOME
bash-3.2$ env | grep DYLD
DYLD=/Users/my_username/abc_home

Mais quand je continue, ce ne sont pas:

bash-3.2$ export DYLD_LIBRARY=$ABC_HOME
bash-3.2$ env | grep DYLD
DYLD=/Users/my_username/abc_home

bash-3.2$ export DYLD_L=$ABC_HOME
bash-3.2$ env | grep DYLD
DYLD=/Users/my_username/abc_home

bash-3.2$ export DYLD_=$ABC_HOME
bash-3.2$ env | grep DYLD
DYLD=/Users/my_username/abc_home

Une idée de ce que je pourrais regarder pour résoudre ça?

FWIW, d’autres exportations avec des traits de soulignement fonctionnent comme prévu, mais cela semble commencer à échouer une fois que j’ajoute le soulignement dans.

Réponses:

6 pour la réponse № 1

Cela semble être une protection OS X (éventuellement ajoutée dans El Capitan) qui empêche l’exportation de ces variables d’environnement (potentiellement dangereuses) vers des processus générés.

Ce fil sur les forums de développement Apple en discuter.

La documentation officielle ici documente aussi ceci brièvement:

Génération de processus enfants de processus restreints par la protection de l'intégrité du système, par exemple en lançant un processus d'assistance dans un groupe avec NSTask ou en appelant le exec(2) commande, réinitialise les ports spéciaux Mach de ce processus enfant. Tout éditeur de liens dynamique (dyld) variables d’environnement, telles que DYLD_LIBRARY_PATH, sont purgés lors du lancement de processus protégés.


-2 pour la réponse № 2

Essaye ça :

oldifs=$IFS
IFS=$"n"
export DYLD_LIBRARY=$ABC_HOME
env | grep DYLD
IFS=$oldifs