Existem convenções de nomenclatura para variáveis ​​em scripts de shell?

113

A maioria das linguagens possui convenções de nomenclatura para variáveis, o estilo mais comum que vejo nos scripts de shell é MY_VARIABLE=foo. Esta é a convenção ou é apenas para variáveis ​​globais? E as variáveis ​​locais para o script?

Garrett Hall
fonte
1
O único que eu sei e que todos devem seguir é que todos os nomes em maiúsculas devem ser reservados para o shell. Não usá-los para evitar sobrescrever acidentalmente algo importante como PATHou HOMEou qualquer outra coisa a concha pode reservar no futuro.
Jw013 11/07/2012
3
Na verdade, todos os nomes em maiúsculas são normalmente usados ​​para variáveis ​​de ambiente. Algumas variáveis ​​(como PATH) são interpretadas pelo shell, enquanto outras (como LANGUAGE ou PRINTER) podem ser interpretadas por outros programas, mas não há nada de especial nisso.
jlp
'variáveis ​​de ambiente' é realmente o nome próprio, vou incluí-lo na minha resposta.
jippie
Embora não seja autoritário, este guia do Google tem boas sugestões: google.github.io/styleguide/shell.xml . Ele sugere manter todos os limites apenas para constantes e variáveis ​​exportadas, caso de cobra para todo o resto. Pessoalmente, gosto da capa de camelo para os meus globais, já que ninguém mais a recomenda, o que diminui a probabilidade de nomear colisões. Além disso, eu gosto do jeito que eles lêem.
Binary Phile
1
Pergunta semelhante sobre SO: Capitalização correta das variáveis ​​de bash e shell script .
Codeforester

Respostas:

111

As variáveis ​​de ambiente ou variáveis ​​de shell que são introduzidas pelo sistema operacional ou pelos scripts de inicialização do shell etc. geralmente estão incluídas CAPITALS.

Para evitar que suas próprias variáveis ​​entrem em conflito com essas variáveis, é uma boa prática usar lower case.

jippie
fonte
32
lower_casesublinhado separado ou camelCase?
Garrett Hall
3
@GarrettHall Isso depende inteiramente de você. Depois de escolher um pedaço de pau com ele. A consistência é mais importante que a escolha real.
Jw013 11/07/2012
2
questão de gosto? Eu pessoalmente gosto do estilo C camelCaseporque é mais curto e não usa o sublinhado feio. Gosto, estilo, ...
jippie
19
questão de gosto? Eu, pessoalmente, gosto de sublinhado separado, mais fácil de ler.
Janos
4
Para completar, variáveis de ambiente não são a única categoria de nomes de variáveis do shell convencionalmente com tudo em maiúsculas - esta regra também se aplica a builtins (como PWD, PS4ou BASH_SOURCE).
Charles Duffy
62

Sim, existem convenções de estilo de código completo para o bash, incluindo nomes de variáveis. Por exemplo, aqui está o Guia de estilos de shell do Google .

Como um resumo para os nomes das variáveis ​​especificamente:

Nomes de variáveis : minúsculas, com sublinhados para separar as palavras. Ex:my_variable_name

Constantes e nomes de variáveis ​​de ambiente : todos os caps, separados por sublinhados, declarados na parte superior do arquivo. Ex:MY_CONSTANT

Anonsage
fonte
1
O link acima agora está morto, mas eu acredito que é isso que ela está ligada à: google.github.io/styleguide/shell.xml
Sam
1
@ Sam, obrigado. Sim, é isso. Já era hora de o Google parar de usar o googlecode.com lol
Anonsage 13/05
1
Não que você sempre faz o que Google diz? ;-)
tim.rohrer
1
Essas convenções são apenas do Google para seus próprios projetos de código aberto: embora possam ser regras muito boas, não podem ser aplicadas a todos os projetos.
smonff
1

Sublinhados para separar as palavras parecem ser o melhor caminho a percorrer.
Tenho alguns motivos para preferir snake_case ao invés de camelCase quando posso escolher:

  1. Flexível: Você pode usar maiúsculas e minúsculas (por exemplo, MY_CONSTANTe my_variable);
  2. Consistente: Os dígitos podem ser separados para tornar o número mais legível (por exemplo 1_000_000_000) e esse recurso é suportado em muitas linguagens de programação;
  3. Comum: comum no ponto em que a regex \wlida com sublinhados, como caracteres da palavra e números ( [a-zA-Z0-9_]).
isar
fonte