Esistono diverse soluzioni per quanto riguarda la definizione delle variabili di ambiente che sono memorizzate nel processo launchd
, vale a dire sopra a StackOverflow e Superuser . In che cosa differiscono queste soluzioni?
Esistono diverse soluzioni per quanto riguarda la definizione delle variabili di ambiente che sono memorizzate nel processo launchd
, vale a dire sopra a StackOverflow e Superuser . In che cosa differiscono queste soluzioni?
Per motivi di chiarezza, farò riferimento a questa soluzione come soluzione statica , < a href="https://stackoverflow.com/a/3756686"> la seconda soluzione come soluzione dinamica , e infine questo come soluzione di launch agent . Vado a confrontare la soluzione statica e dinamica con quella di launch agent, rispettivamente.
La soluzione statica comporta la modifica di /etc/launchd.conf
. Ciò ha il vantaggio, come con la soluzione dell'agente di lancio, che le variabili sono impostate direttamente all'accesso. Gli svantaggi sono che
/etc/launchd.conf
non consente cose come la sostituzione di variabili e cose del genere (almeno questa è la mia ipotesi, forse è fattibile), /etc/launchd.conf
per disattivare la soluzione statica, con l'altra puoi mettere tutti i file in luoghi accessibili, ad es. l'agente di lancio in ~/Library/LaunchAgents/
, La soluzione dinamica è simile alla soluzione dell'agente di lancio. Il suo svantaggio è che le variabili non sono disponibili subito dopo il login, devi prima (ri-) definirle. Per combinare la soluzione dinamica con l'altra, immagina di voler impostare la variabile FOO
sul contenuto della variabile BAR
. Sparerebbero una shell, dite la bash e digitate
launchctl setenv FOO "$BAR"
echo 'setenv FOO $BAR' >> ~/.conf.launchd
Quindi FOO
sarebbe disponibile in tutte le applicazioni avviate dopo questa definizione e sarebbe anche definito subito dopo il successivo accesso.
Leggi altre domande sui tag launchd environment-variables