Eu queria saber se existe uma convenção para extensões de tipo de arquivo para scripts de shell que você deseja obter em vez de executar. Por exemplo:
Se eu quiser executar este script em um subshell.
./script.sh
Se eu quero lembrar de executar este script a partir do shell atual.
. script.source
Existe uma convenção (como POSIX, por exemplo) para um tipo de arquivo no segundo exemplo? Algo como .source
ou .sourceme
?
Atualizar
Esta pergunta não pergunta sobre nenhuma opinião. Afirmei claramente que gostaria de saber se existe uma extensão de arquivo padronizada para esse tipo de script. Essa pergunta é ainda menos baseada em opiniões do que essa pergunta bem recebida em um problema semelhante ( use extensão .sh ou .bash para scripts bash? ).
shell-script
shell
standard
conventions
Mateusz Piotrowski
fonte
fonte
#!/bin/sh
ou similar deve ter nenhuma extensão, porque o usuário não precisa se preocupar com o que a linguagem do script subjacente foi escrito.$PATH
, você chegou a usar o tempo todo, então é como,ps
,ls
,curl
e todos os outros comandos, então você começa a funções de conclusão shell construção em torno dele, acho tudo bem em largar a extensão. Mas sim, quando você está fornecendo um script de shell, que não são executáveis por si mesmos, eu nãochmod +x
os faria e os nomeariascript.sh
. também costumo atribuir uma extensão apenas porque, se não o fizer, não receberei destaque de sintaxe no meu editor.Respostas:
Eu usaria
.sh
(para arquivos nosh
idioma POSIX ,.bash
parabash
arquivos não compatíveis com sh , que é a extensão que identifica o idioma em que o script está escrito) para arquivos destinados a serem originados (ou, geralmente, não destinados a serem executados), e nenhuma extensão para arquivos que devem ser executados.Você também pode adicionar um:
she-bang, para que, quando executados por engano (embora eu esperasse que esses arquivos não devessem receber permissões de execução, o que já impediria a execução), você receberá um aviso de que deve ser originado.
fonte
No caso de arquivos de origem, acho que a melhor maneira é .conf para arquivos que configuram seu script e .shlib ou .shlibs para arquivos que possuem funções ou outros utilitários.
Se você deseja impedir que seu script seja executado com o shell errado, e o hashbang não for suficiente para você, use:
fonte
/proc/$$/exe
, assim como você pode fazê-lo comocase $(readlink "/proc/$$/exe") in */bash)...
, embora aqui, eu simplesmente usar:if [ -z "$BASH_VERSION" ]
. (echo
deveria serecho >&2
). (Gosto de você.conf
ou.shlibs
(mas para arquivos sh) de extensões, embora isso não ajude os marcadores de sintaxe que dependem da extensão).