Quais são as diferenças fundamentais entre os shells mainstream * NIX e quais cenários podem solicitar que você use um sobre o outro? Eu entendo que parte disso provavelmente se resume à preferência do usuário, mas eu só usei o bash e estou interessado em saber onde outro shell pode ser útil.
Além disso, há um impacto nos scripts de shell gravados pelo usuário ao executar sob um shell ou outro ou é simplesmente uma questão de alterar o shell na parte superior do arquivo? Meu instinto diz que não é tão fácil.
jsh
(que não é um shell de java!), Que não possui substituição de variáveis como${VAR#foo}
e${VAR%bar}
.tcsh
é bastante popular entre os usuários do UNIX que aprenderam seus truques antes dos ~ meados dos anos 90 (que viu a introdução de ambosbash
ezsh
), especialmente entre os + velhos UNIXC
desenvolvedores, que começou a vida comcsh
(lembrete, o c emcsh
stands para aC
linguagem , que foi a inspiração para suas diferenças em relação às conchas no estilo bourne). Veja também a programação Csh considerada prejudicial , que eu costumo usar para obter dicas sobre a magia profunda do POSIX (além de seus argumentos anti-csh).Existem dois tipos básicos de shell, sh (por exemplo, bash) e csh (por exemplo, tcsh). Para uso interativo, tudo se resume ao que você está acostumado. Eu uso csh, e depois tcsh, há anos e seria doloroso mudar, só porque estou acostumado a isso. Também usei o bash e acho que não há razões convincentes para mudar. Exceto, talvez, se um ou outro não estiver disponível nas máquinas que você usa regularmente.
Para a programação, a sintaxe é diferente. Você não pode simplesmente mudar o shell, mas também precisa alterar a sintaxe do script. Para scripts, você deseja usar sh ou bash. A sintaxe é muito mais acessível aos scripts, conforme explicado aqui (obrigado a Riccardo Murri pelo link. Este é um bom guia sobre scripts de bash.
Se você não escolheu um shell e espera escrever alguns scripts, eu usaria o bash apenas para reduzir a quantidade de coisas que você precisa aprender.
fonte
Nos velhos tempos, quando a AT&T inventou o UNIX, havia Bourne Shell, escrito por Steve Bourne. Era bastante básico e carecia de muitas ferramentas que nós damos como certa hoje em dia.
A AT&T não estava realmente no negócio do UNIX, então, nesse momento, o sistema operacional muito básico foi adotado por Berkelely, e eles fizeram algumas alterações no BSD UNIX. Entre muitas mudanças, havia um novo shell, chamado csh, que tinha muitas melhorias em relação ao sh, incluindo controle de tarefas, melhor uso interativo e assim por diante. Infelizmente, eles decidiram que a sintaxe da programação sh era péssima e criaram seus próprios (um tanto mal) copiados dos estilos de codificação C. (Um discurso clássico é http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ ) Portanto, agora havia duas sintaxes.
Mais tarde, eles fizeram melhorias no CSH, adicionando a conclusão de guias e outras coisas. Isso se tornou tcsh e, se você usa CSH, provavelmente é esse o que você usa.
A AT&T decidiu que não estava totalmente fora dos negócios do UNIX, e eles o aprimoraram também. David Korn (cara legal) criou o shell Korn. Com base na idéia de estender a sintaxe do shell Bourne, adicionou muitas coisas para programadores e uso interativo. Na verdade, existem algumas versões e você raramente vê coisas como ksh88 e ksh93, denotando as variantes.
Depois veio a FSF e o GNU OS. Eles queriam criar seu próprio sistema operacional compatível com UNIX, chamado Hurd, e queriam um shell melhor para ele. Eles chamaram bash, de Bourne Again SHell. As regras do POSIX chegaram exatamente nessa época e elas queriam criar o shell POSIX. Eles olharam em volta, pegando a sintaxe do shell Bourne e as melhorias do shell Korn, além de roubar e estender os recursos interativos do tcsh. Tornou-se o shell de fato no Linux, por isso é muito comum.
Há também o zsh, escrito para ser o shell 'final'. Também é muito comum no mundo Linux. Ele estendeu o bash (e polinizou um pouco um pouco, algumas coisas novas voltaram ao bash).
Se eu fosse escolher um shell, eu escolheria bash ou zsh. possivelmente o bash está em mais alguns lugares que o zsh. O zsh é mais poderoso, mas o bash tem sido bom para mim. O shell Bourne real / bin / sh está disponível apenas por razões históricas. O bash tem praticamente tudo o que o ksh tem a oferecer e muito mais. A sintaxe é mais limpa que csh ou tcsh e possui recursos melhores que qualquer um deles.
Converter um script depende de o que para quê. O estilo de shell Bourne (sh, ksh, bash, zsh) para ou do estilo csh (csh, tcsh) será difícil. Passar do antigo para o mais recente (/ bin / sh => bash, / bin / ksh => zsh) será mais fácil do que o contrário.
fonte
Os dois principais ramos das cascas são os derivados da casca Bourne (sh, bash, ksh, ash, yash e zsh) e os derivados csh (tcsh e ... uhm ... tcsh).
Eu suspeito (embora não tenha números reais) que o bash é o mais amplamente usado, parece ser o shell padrão na maioria dos linuxes.
A maioria das coisas escritas em um derivado de uma casca de bourne provavelmente funcionará em outras. A maioria das coisas escritas em um shell Bourne provavelmente precisará ser modificada para ser executada em csh ou tcsh.
Pessoalmente, usei o ksh quando comecei, porque era isso que estava no sistema que estava usando. Eu uso principalmente o bash agora.
fonte
Eu usei várias conchas ao longo do tempo. Não é nada super avançado, mas muitas coisas práticas sobre sysadmin e programação que exigiram personalização suficiente.
Eu acho que o zsh tem mais opções de personalização, pelo menos costumava ter, mas depois de usá-lo por alguns anos, eu tive o suficiente com seus problemas de estabilidade e codificação de caracteres. O Bash é sólido, nunca teve problemas semelhantes e está instalado em qualquer lugar.
fonte