export
è un builtin di Bash, echo
è un eseguibile nel tuo $PATH
. Quindi export
viene interpretato da Bash così com'è, senza generare un nuovo processo.
Devi fare in modo che Bash interpreti il tuo comando, che puoi passare come una stringa con -c
opzione:
bash -c "export foo=bar; echo \$foo"
INOLTRE:
Ogni invocazione di bash -c
inizia con un ambiente fresco. Quindi qualcosa come:
bash -c "export foo=bar"
bash -c "echo \$foo"
non funzionerà. La seconda invocazione non ricorda foo
.
Invece, devi concatenare i comandi separati da ;
in una singola invocazione di bash -c
:
bash -c "export foo=bar; echo \$foo"
Se stai usando C shell -
setenv PATH $PATH":/home/tmp"