Como afirmado, bash
geralmente está disponível na instalação padrão para muitas distribuições. Seu script não alcançará a melhor base de usuários contando com zsh
.
Uma pergunta importante a ser respondida antes de projetar seu script é " Por que importa em qual shell um script é executado? "
Os shells diferentes usam sintaxe diferente ou oferecem funções adicionais do shell que podem não ser suportadas por outros shells. Para escrever um script para o "mundo geral do usuário final do linux", determine se o script usa alguma sintaxe ou função de shell que dependa de um ambiente de shell específico.
Por exemplo, o bash
shell suporta certas expansões que não são suportadas pelo dash
Bourne shell ou o que quer que /bin/sh
aponte para o sistema do usuário.
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Feb 19 2014 /bin/sh -> dash
Tente executar echo {1..10}
com /bin/sh
comparado a /bin/bash
e você obterá resultados muito diferentes.
O mesmo vale para o zsh
qual, embora bash
ofereça suporte à maioria das sintaxes, oferece expansão e sintaxe adicionais que não são suportadas pelo bash
shell. Veja esta tabela comparando shells para exemplos específicos.
Você pode ampliar sua base de usuários em potencial bash
, aderindo a scripts que funcionam quando chamados #!/bin/sh -u
. No entanto, isso suscita outra questão importante a ser feita: " O que está sendo sacrificado em troca de uma maior portabilidade? "
Determine se as diferenças relacionadas a questões de segurança, funcionalidade, eficiência ou qualquer outra coisa que você considere ser uma prioridade para o seu script valeriam o sacrifício. Talvez você não queira o uso generalizado de um script com uma vulnerabilidade de segurança conhecida apenas porque funciona em mais ambientes.
Muitos scripts são escritos para bash
que o suporte a esses scripts seja usado como critério ao comparar shells de comandos . Muito mais pessoas poderão executar seu script do que se ele confiar zsh
ou em qualquer outra sintaxe exclusiva de um ambiente shell.
Além disso, lembre-se de que você não tem controle sobre como o usuário executa o script (também útil para depurar scripts em diferentes shells ):
Lembre-se de que se você usar um shell para ler um script de shell ("sh scriptname"), em vez de executá-lo diretamente ("./scriptname"), o shell tratará todos os comentários no início do script como comentários. Em particular, o comentário que especifica o intérprete a ser usado ao executar o script (“#! / Bin / sh -u”) será ignorado, assim como todas as opções listadas ao lado desse intérprete.
Portanto, o melhor que você pode fazer sobre isso é tornar seus scripts portáteis, desde que não exista grande sacrifício em como ele funciona.
Você também pode ver convenções de codificação Bash - Stack Overflow .
zsh
podem ser populares, enquanto em outros (setor bancário) isso é praticamente inédito. Eu acho que você deve fornecer muito mais informações se precisar de conselhos adequados sobre esse assunto.