web-dev-qa-db-fra.com

Définition de variables d'environnement sous Linux à l'aide de Bash

Dans tcsh, le script suivant fonctionne:

#!/bin/tcsh
setenv X_ROOT /some/specified/path

setenv XDB    ${X_ROOT}/db
setenv PATH   ${X_ROOT}/bin:${PATH}

xrun -d xdb1 -i $1 > $2

Quel est l'équivalent du tcsh setenv fonctionne dans Bash?

Y a-t-il un analogue direct? Les variables d'environnement servent à localiser l'exécutable.

68
pbh101

export VAR=value définira VAR sur valeur. Placez-le entre guillemets simples si vous voulez des espaces, comme export VAR='my val'. Si vous souhaitez que la variable soit interpolée, utilisez des guillemets doubles, comme export VAR="$MY_OTHER_VAR".

104
mipadi

La raison pour laquelle les gens suggèrent souvent d'écrire

VAR=value
export VAR

au lieu du plus court

export VAR=value

est que la forme la plus longue fonctionne dans plus de coquilles différentes que la forme courte. Si vous savez que vous avez affaire à bash, cela fonctionne bien, bien sûr.

33
zaphod

Définir une variable locale et une variable d'environnement à l'aide de Bash sous Linux

Recherchez des variables locales ou d’environnement pour une variable appelée LOL dans Bash:

el@server /home/el $ set | grep LOL
el@server /home/el $
el@server /home/el $ env | grep LOL
el@server /home/el $

Contrôle d'intégrité, aucune variable locale ou d'environnement appelée LOL.

Définissez une variable locale appelée LOL en local, mais pas en environnement. Définissez-le ainsi:

el@server /home/el $ LOL="so wow much code"
el@server /home/el $ set | grep LOL
LOL='so wow much code'
el@server /home/el $ env | grep LOL
el@server /home/el $

La variable 'LOL' existe dans les variables locales, mais pas dans les variables d'environnement. LOL disparaîtra si vous redémarrez le terminal, déconnectez-vous/connectez-vous ou exécutez exec bash.

Définit une variable locale, puis efface toutes les variables locales dans Bash

el@server /home/el $ LOL="so wow much code"
el@server /home/el $ set | grep LOL
LOL='so wow much code'
el@server /home/el $ exec bash
el@server /home/el $ set | grep LOL
el@server /home/el $

Vous pouvez aussi simplement supprimer la variable unique:

el@server /home/el $ LOL="so wow much code"
el@server /home/el $ set | grep LOL
LOL='so wow much code'
el@server /home/el $ unset LOL
el@server /home/el $ set | grep LOL
el@server /home/el $

Variable locale LOL a disparu.

Promouvoir une variable locale en une variable d’environnement:

el@server /home/el $ DOGE="such variable"
el@server /home/el $ export DOGE
el@server /home/el $ set | grep DOGE
DOGE='such variable'
el@server /home/el $ env | grep DOGE
DOGE=such variable

Notez que l'exportation le fait apparaître à la fois comme une variable locale et une variable d'environnement.

La variable exportée DOGE ci-dessus survit à une réinitialisation Bash:

el@server /home/el $ exec bash
el@server /home/el $ env | grep DOGE
DOGE=such variable
el@server /home/el $ set | grep DOGE
DOGE='such variable'

désélectionner toutes les variables d'environnement:

Vous devez sortir une canette de Chuck Norris pour réinitialiser toutes les variables d'environnement sans déconnexion/login:

el@server /home/el $ export CAN="chuck norris"
el@server /home/el $ env | grep CAN
CAN=chuck norris
el@server /home/el $ set | grep CAN
CAN='chuck norris'
el@server /home/el $ env -i bash
el@server /home/el $ set | grep CAN
el@server /home/el $ env | grep CAN

Vous avez créé une variable d'environnement, puis réinitialisé le terminal pour vous en débarrasser.

Ou vous pouvez définir et désélectionner une variable d'environnement manuellement comme ceci:

el@server /home/el $ export FOO="bar"
el@server /home/el $ env | grep FOO
FOO=bar
el@server /home/el $ unset FOO
el@server /home/el $ env | grep FOO
el@server /home/el $
27
Eric Leschinski

VAR=value définit VAR sur valeur.

Après ça export VAR le donnera également aux processus enfants.

export VAR=value est un raccourci qui fait les deux.

11
iny

Je pense que vous cherchez export - bien que je puisse me tromper .. Je n'ai jamais joué avec tcsh auparavant. Utilisez la syntaxe suivante:

export VARIABLE=value
7
Oli