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.