Eu corro por muitos scripts de shell com variáveis em todas as maiúsculas e sempre achei que há um sério mal-entendido nisso. Meu entendimento é que, por convenção (e talvez por necessidade há muito tempo), as variáveis de ambiente estão em maiúsculas.
Mas em ambientes modernos de script como o Bash, sempre preferi a convenção de nomes em minúsculas para variáveis temporárias e maiúsculas apenas para variáveis exportadas (ou seja, ambiente) . Por exemplo:
#!/usr/bin/env bash
year=`date +%Y`
echo "It is $year."
export JAVA_HOME="$HOME/java"
Essa sempre foi minha opinião sobre as coisas. Existem fontes autorizadas que concordam ou discordam dessa abordagem ou é apenas uma questão de estilo?
fonte
USER="username"
em um script bash automatizando alguns comandos remotos sobre ssh em vez deuser="username"
. Ugh! Ainda bem que sei agora!Quaisquer convenções de nomenclatura seguidas consistentemente sempre ajudarão. Aqui estão algumas dicas úteis para nomear variáveis de shell:
Use todos os limites e sublinhados para variáveis e constantes exportadas, especialmente quando elas são compartilhadas entre vários scripts ou processos. Use um prefixo comum sempre que aplicável, para que as variáveis relacionadas se destaquem e não colidam com as variáveis internas do Bash, todas em maiúsculas.
Exemplos:
JOB_HOME
JOB_LOG
JOB_TEMP
JOB_RUN_CONTROL
LOG_DEBUG
LOG_INFO
LOG_ERROR
STATUS_OK
STATUS_ERROR
STATUS_WARNING
Use "snake case" ( todas minúsculas e sublinhados ) para todas as variáveis com escopo definido para um único script ou bloco.
Exemplos:
input_file
first_value
max_amount
num_errors
Use maiúsculas e minúsculas quando a variável local tiver algum relacionamento com uma variável de ambiente, como:
old_IFS
old_HOME
Use um sublinhado à esquerda para variáveis e funções "particulares". Isso é especialmente relevante se você escrever uma biblioteca de shell em que funções dentro de um arquivo de biblioteca ou entre arquivos precisem compartilhar variáveis, sem colidir com nada que possa ter o mesmo nome no código principal.
Exemplos:
_debug
_debug_level
_current_log_file
Evite estojo de camelo . Isso minimizará os erros causados por erros de digitação de casos. Lembre-se de variáveis de shell diferenciam maiúsculas de minúsculas .
Exemplos:
inputArray
thisLooksBAD
,numRecordsProcessed
,veryInconsistent_style
Veja também:
fonte
Se as variáveis de shell forem exportadas para o ambiente, vale a pena considerar que a Definição de variável de ambiente POSIX (edição 7, 2018) especifica:
...
fonte
Eu faço o que você faz. Duvido que exista uma fonte autorizada, mas parece um padrão de fato bastante difundido.
fonte
cat /tmp/location.txt
Na verdade, o termo "variáveis de ambiente" parece ser de cunhagem bastante recente. Kernighan e Pike em seu livro clássico "The UNIX Programming Environment", publicado em 1984, falam apenas de "variáveis de shell" - não há sequer uma entrada para "ambiente" no índice!
fonte
É apenas uma convenção amplamente aceita, duvido que exista alguma fonte "autorizada" para isso.
fonte
Eu costumo usar ALL_CAPS para variáveis globais e de ambiente. é claro, no Bash não há escopo de variável real, portanto, há uma boa parte das variáveis usadas como globais (principalmente configurações e rastreamento de estado) e relativamente poucos 'locais' (contadores, iteradores, seqüências parcialmente construídas e temporários)
fonte