Si je cours
export TEST=foo
echo $TEST
Il affiche foo.
Si je cours
TEST=foo echo $TEST
Ce ne est pas. Comment puis-je obtenir cette fonctionnalité sans utiliser d'exportation ou de script ?
Réponse acceptée :
C'est parce que le shell développe la variable dans la ligne de commande avant il exécute en fait la commande et à ce moment-là, la variable n'existe pas. Si vous utilisez
TEST=foo; echo $TEST
ça marchera.
export
fera apparaître la variable dans l'environnement des commandes exécutées ultérieurement (pour savoir comment cela fonctionne dans bash, voir help export
). Si vous avez seulement besoin que la variable apparaisse dans l'environnement d'une commande, utilisez ce que vous avez essayé, c'est-à-dire :
TEST=foo your-application
La syntaxe du shell décrit cela comme étant fonctionnellement équivalent à :
export TEST=foo
your-application
unset TEST
Voir les spécifications pour plus de détails.
La partie intéressante est que le export
la commande change le drapeau d'exportation pour la variable nom . Donc si vous faites :
unset TEST
export TEST
TEST="foo"
TEST
sera exporté même s'il n'était pas défini au moment de l'exportation. Cependant, unset
devrait en supprimer l'attribut d'exportation.