Se corro
export TEST=foo
echo $TEST
Emette foo.
Se corro
TEST=foo echo $TEST
Non è così. Come posso ottenere questa funzionalità senza utilizzare l'esportazione o uno script?
Risposta accettata:
Questo perché la shell espande la variabile nella riga di comando prima esegue effettivamente il comando e in quel momento la variabile non esiste. Se usi
TEST=foo; echo $TEST
funzionerà.
export
farà apparire la variabile nell'ambiente dei comandi eseguiti successivamente (per come funziona in bash vedere help export
). Se hai solo bisogno che la variabile appaia nell'ambiente di un comando, usa ciò che hai provato, ovvero:
TEST=foo your-application
La sintassi della shell lo descrive come funzionalmente equivalente a:
export TEST=foo
your-application
unset TEST
Vedere le specifiche per i dettagli.
La parte interessante è che l'export
comando cambia il flag di esportazione per la variabile nome . Quindi se lo fai:
unset TEST
export TEST
TEST="foo"
TEST
verrà esportato anche se non era definito al momento dell'esportazione. Tuttavia, ulteriormente unset
dovrebbe rimuovere l'attributo export da esso.