Definizione delle variabili di ambiente con launchd / launchctl

2

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?

    
posta Percival Ulysses 22.09.2012 - 14:02
fonte

1 risposta

4

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

  • le variabili sono definite per tutti gli utenti. La soluzione di agente di lancio consente a ciascun utente di decidere autonomamente. Se si vogliono definire variabili per tutti gli utenti con la soluzione dell'agente di lancio, lo script della shell può essere modificato con un ciclo (e un altro file),
  • la definizione delle variabili in /etc/launchd.conf non consente cose come la sostituzione di variabili e cose del genere (almeno questa è la mia ipotesi, forse è fattibile),
  • ovviamente, devi accedere a /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/ ,
  • le variabili non sono disponibili immediatamente dopo la modifica del file, come con la soluzione di agente di lancio (ma vedi sotto).

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.

    
risposta data 22.09.2012 - 14:02
fonte

Leggi altre domande sui tag