come impostare le variabili d'ambiente nella conchiglia


91

Qualcuno può dirmi qual è il modo corretto per impostare un gruppo di variabili di ambiente nel guscio di pesce?

Nel mio file .config / fish / config.fish, ho una funzione per impostare le mie variabili d'ambiente in questo modo

function setTESTENV
      set -x BROKER_IP '10.14.16.216'
      set -x USERNAME 'foo'
      set -x USERPASS 'bar'
end 

quando digito dal prompt dei comandi setTESTENVe faccio un envnella riga di comando, non vedo queste informazioni.

Risposte:


70

Le variabili che stai dichiarando sono mantenute in un ambito locale all'interno della tua funzione.

Uso:

set -g -x

Qui " g" è per globale.


152

Usa variabili universali

Se la variabile deve essere condivisa tra tutte le istanze fish dell'utente corrente sul computer corrente e conservata durante i riavvii della shell, è necessario utilizzare -Uo --universal:

set -Ux FOO bar

L'utilizzo setcon -go --globalnon imposta la variabile in modo persistente tra le istanze della shell


Nota :

Non aggiungere alle variabili universali nel config.fishfile, perché queste variabili diventeranno più lunghe con ogni nuova istanza di shell. Invece, esegui semplicemente set -Uxuna volta dalla riga di comando. E verrà memorizzato nel file .config/fish/fishd.MACHINE_ID, dove in MACHINE_IDgenere si trova il tuo indirizzo MAC.


Le mie variabili non sono state salvate in fishd.MACHINE_ID, ma invece sono state salvate in~/.config/fish/fish_variables
Seanny123

la mia variabile è stata salvata in ~/.config/fish/fish_variablesubuntu 20.04
Igor Markelov

11

un'altra opzione è eseguire:

export (cat env_file.txt |xargs -L 1)

dove env_file.txt contiene le righe del formato VAR=VALUE

questo ha il vantaggio di mantenere le variabili in un formato supportato da altre shell e strumenti


Nel caso volessi evitare commenti puoi: export (grep "^[^#]" .env |xargs -L 1)
Guillermo

10

Variabili ambientali nei pesci

Vorrei aggiungere che, mentre la risposta di @ JosEduSol non è errata e aiuta a risolvere il problema dell'OP, -gsta solo impostando l'ambito come globale, mentre -xcausa l'esportazione della variabile di ambiente specificata nei processi figli.

Il motivo per cui quanto sopra non riesce, è perché @cfpete sta impostando le variabili env all'interno di una funzione e l'ambito predefinito sarà locale per quella funzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.