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.
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"
.
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.
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 $
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.
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