Quelqu'un peut-il me dire, s'il vous plaît, quelle est la bonne façon de définir un ensemble de variables environnementales dans la coquille de poisson?
Dans mon fichier .config/fish/config.fish, j'ai une fonction pour configurer mes variables d'environnement comme si
function setTESTENV
set -x BROKER_IP '10.14.16.216'
set -x USERNAME 'foo'
set -x USERPASS 'bar'
end
lorsque je tape à partir de la commande Invite setTESTENV
et que je fais un env
dans la ligne de commande, je ne vois pas ces informations.
Les variables que vous déclarez sont conservées dans une portée locale dans votre fonction.
Utilisation:
set -g -x
Ici "g
" est pour global.
Si la variable doit être partagée entre toutes les instances de poisson utilisateur actuelles sur l'ordinateur actuel et préservée lors des redémarrages du shell, vous devez utiliser -U
ou --universal
:
set -Ux FOO bar
Utiliser set
avec -g
ou --global
ne définit pas la variable de manière persistante entre les instances de shell
Variables d'environnement dans le poisson
J'aimerais ajouter que, bien que la réponse de @ JosEduSol ne soit pas incorrecte et aide à résoudre le problème de l'OP, -g
ne définit que la portée comme étant globale, alors que -x
entraîne l'exportation de la variable d'environnement spécifiée vers des processus enfants.
La raison de l'échec ci-dessus est due au fait que @cfpete définit les vars env à l'intérieur d'une fonction et que la portée par défaut sera locale pour cette fonction.
une autre option consiste à exécuter:
export (cat env_file.txt |xargs -L 1)
où env_file.txt contient des lignes de format VAR=VALUE
cela a l'avantage de garder les variables dans un format supporté par d'autres coques et outils