cómo establecer variables de entorno en la concha de pescado

91

¿Alguien puede decirme cuál es la forma correcta de establecer un montón de variables de entorno en la concha de pescado?

En mi archivo .config / fish / config.fish, tengo una función para configurar mis variables de entorno así

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

cuando escribo desde el símbolo del sistema setTESTENVy hago una enven la línea de comandos, no veo esta información.

cfpete
fuente

Respuestas:

70

Las variables que está declarando se mantienen en un ámbito local dentro de su función.

Utilizar:

set -g -x

Aquí " g" es para global.

JosEduSol
fuente
152

Usar variables universales

Si la variable debe compartirse entre todas las instancias de peces del usuario actual en la computadora actual y conservarse en los reinicios del shell, debe usar -Uo --universal:

set -Ux FOO bar

Usar setcon -go --globalno establece la variable de forma persistente entre instancias de shell


Nota :

No agregue a las variables universales en el config.fisharchivo, porque estas variables se alargarán con cada nueva instancia de shell. En su lugar, simplemente ejecute set -Uxonce en la línea de comando. Y se almacenará en el archivo .config/fish/fishd.MACHINE_ID, donde MACHINE_IDnormalmente se encuentra su dirección MAC.

Paolo Moretti
fuente
Mis variables no se guardaron fishd.MACHINE_ID, sino que se guardaron en~/.config/fish/fish_variables
Seanny123
mi variable se guardó en ~/.config/fish/fish_variablesubuntu 20.04
Igor Markelov
11

otra opción es ejecutar:

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

donde env_file.txt contiene filas del formato VAR=VALUE

esto tiene la ventaja de mantener las variables en un formato compatible con otros shells y herramientas

Ophir Yoktan
fuente
En caso de que quieras evitar comentarios puedes: export (grep "^[^#]" .env |xargs -L 1)
Guillermo
10

Variables ambientales en peces

Me gustaría agregar que, si bien la respuesta de @ JosEduSol no es incorrecta y ayuda a resolver el problema de OP, -gsolo establece el alcance para que sea global, mientras-x hace que la variable de entorno especificada se exporte a procesos secundarios.

La razón por la que lo anterior falla es porque @cfpete está configurando las variables de entorno dentro de una función y el alcance predeterminado será local para esa función.

Jorge Bucaran
fuente