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"