Eu percebi - provavelmente na Usenet em meados dos anos 90 (!) - que a construção
export var=value
é um bashismo, e que a expressão portátil é
var=value
export var
Eu venho defendendo isso há anos, mas recentemente alguém me desafiou e não consigo encontrar nenhuma documentação para apoiar o que costumava ser uma sólida crença minha.
Pesquisar no Google "export: command not found"
parece não trazer nenhum caso em que alguém realmente tenha esse problema; portanto, mesmo que seja genuíno, acho que não é muito comum.
(Os hits que recebo parecem ser iniciantes que copiam / colam pontuação e acabam com 'export: command not found
algo assim, ou tentando usá export
-lo sudo
; e csh
usuários novatos tentando usar a sintaxe do shell Bourne.)
Certamente posso dizer que ele funciona no OS X e em várias distribuições Linux, incluindo as que sh
estão dash
.
sh$ export var=value
sh$ echo "$var"
value
sh$ sh -c 'echo "$var"' # see that it really is exported
value
No mundo de hoje, é seguro dizer que export var=value
é seguro usar?
Eu gostaria de entender quais são as consequências. Se não é portátil para a v7 "Bourne classic", isso não passa de trivial. Se houver sistemas de produção em que o shell realmente não possa lidar com essa sintaxe, seria útil saber.
busybox
vem com sua própria concha mínima? (Eu não estou em uma posição para tentar qualquer direito esta segunda.)