
Normalmente trabalho em bash no Linux e, se precisar exportar uma variável, posso escrever:
export LC_ALL=C
No entanto, estou trabalhando mais no Solaris atualmente, e os administradores do Solaris com quem trabalho sempre escreverão:
LC_ALL=C ; export LC_ALL
Existe uma razão para preferir o último ao primeiro?
Eu acho que o primeiro pode não ser reconhecido por alguns shells. Quais?
Obrigado.
Responder1
Acredito que o verdadeiro Bourne Shell (/bin/sh em muitas variantes comerciais do Unix) não suporta a atribuição e exportação em uma única instrução. É assim que me lembro dos meus dias no Solaris.
Não sei se as novas versões do Solaris usam o bash por padrão agora. Independentemente disso, o seu último caso é mais portátil, então eu continuaria com ele.
Responder2
No Solaris, /bin/sh requer as duas instruções, enquanto /bin/bash está bem com uma instrução. No Linux, /bin/sh geralmente é um link simbólico para /bin/bash, então não há diferença.
Se você estiver escrevendo um script que pode ser originado de outro script, sempre use o formato de duas instruções. Se o script não for ou não for originado, basta verificar a linha shebang na parte superior do script para ver qual shell você está usando. Muitos scripts Solaris usam /bin/sh e este é o padrão para muitos pacotes de software. Como tal, a maioria dos administradores prefere a forma mais portátil de exportar uma variável.
Responder3
Você pode usar o primeiro se estiver trabalhando principalmente no bash, já que pode usar o bash como root shell sem quaisquer efeitos colaterais perigosos desde o Solaris 10. Se a máquina precisar reinicializar em usuário único e não encontrar o bash, há um retorno automático para Bourne Concha.
Responder4
Estou trabalhando no Solaris 2.6, por volta de 1998. Esta versão veio originalmente apenas com sh e csh. Usando sh, vejo que você precisa da versão de duas linhas mencionada para ver o resultado correto do env. Usando o bash do sunfreeware.org, funciona bem com a versão de uma linha.