Qual shell devo usar - tcsh vs bash? [fechadas]

30

Eu tenho usado tcshpor um longo tempo agora. Mas sempre que procuro algo, geralmente descubro que os métodos especificados são bashespecíficos. Até a sintaxe dos scripts de shell é diferente para os dois.

Pelo que experimentei pesquisar e aprender na internet, bashparece ser o shell mais comum usado. Até o número de perguntas marcadas neste site bashé muito mais (cinco vezes mais atual) do que o número de perguntas marcadas tcsh.

Então, eu estou querendo saber se devo mudar para o bash. O que você acha?

Por que devo me ater a tcshOU por que devo passar para bash?

Lazer
fonte
3
Acho que nunca ouvi alguém mudar para o bash; normalmente as pessoas usam o bash porque é o padrão e depois mudam para algo melhor :)
Michael Mrozek
6
@ Michael: Bem, o OS X mudou do tcsh para o bash na versão 10.3, então esse é um caso de pessoas que mudam para o bash.
precisa saber é o seguinte
5
você deve usar zsh(que OS X devem ter mudado para)
xenoterracide
6
mas escreva seus scripts para dashaqueles que devem funcionar em praticamente qualquer coisa.
Xenoterracide
2
Acho divertido que todo mundo esteja sugerindo zsh. Ao mesmo tempo, não é divertido porque realmente não responde à pergunta das operações. foi por isso que fiz da minha resposta zsh um comentário, não uma resposta. No entanto, a menos que você esteja tendo problemas para aprender a shell script tcsh, siga o que sabe. Se você tiver problemas para usar, tcshposte seu problema aqui. Não mude apenas porque . Existem mais postagens do bash porque são instaladas por padrão em mais locais, o que não a torna melhor.
Xenoterracide

Respostas:

22

Depois de aprender o bash, acho que o tcsh é um passo atrás. Por exemplo, o que eu poderia fazer facilmente no bash, acho difícil fazer no tcsh. Minha pergunta sobre o tcsh . O suporte e a documentação da Internet também são muito melhores para o bash e muito limitados para o tcsh. O número de livros da O'Reilly no bash é grande, mas não encontrei nada semelhante para o tcsh.

Andrew Stern
fonte
26

Na verdade, você deve passar para zsh! É essencialmente compatível com versões anteriores e tem toda a utilidade de bashuma grande e enorme ajuda de grandiosidade . Existe até um livro (embora eu não tenha conseguido ler).

Admito que, por um motivo, não zshexagere, bashmas a menos que você esteja constantemente trabalhando em várias novas instalações, isso não se aplica. Especialmente se você sabe sobre as mais significativas diferenças . No entanto, isso é realmente semelhante às diferenças entre vime vi; você não quer ser ingênuo, mas praticamente não é grande coisa. Até os vimusuários mais experientes podem se orientar emacse vice-versa.

gvkv
fonte
20

Você deve mudar para um shell compatível com POSIX http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html , como um dos bash, ksh, dash, mas não o zsh e certamente não o tcsh. Faz muito tempo que o csh foi declarado uma má opção para scripts: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ , o tcsh não é muito diferente nessa área.

Ao escrever scripts, certifique-se de usar apenas construções POSIX (por exemplo, evitar basismos e afins) se você não quiser ser bloqueado novamente em algo não portátil.

jlliagre
fonte
7

A compatibilidade obcecada está faltando, eu acho. Se você tentar tornar tudo compatível colocando #!/bin/shno topo e usando extensões .sh , mas nunca teste em nada além do bash , não garantiu um script compatível! É melhor apenas usar #!/bin/bashe .bash para que os usuários realmente saibam o requisito real.

Se você conhece zsh , tcsh ou algo melhor que o bash , e tem um bom manual de referência, não se contenha . Assim como as pessoas esperam instalar o perl ou python para poder executar alguns scripts, elas também podem lidar com a instalação do seu shell obscuro! : D

Kevin Cantu
fonte
1
Na verdade, não é /bin/shgarantido que aponte para um shell compatível com o korn, enquanto o tcsh é um shell derivado do csh. É provável que /bin/shjá aponte para o bash ou outro shell compatível e é quase certo que não será afetado pela alteração do shell do usuário . csh e sh são completamente incompatíveis.
Maciej Piechotka
1
Não tenho certeza do que é garantido. Eu sei que existem muitas pessoas escrevendo scripts para "/ bin / sh" que estão repletos de Bash-isms que o Bash-as- / bin / sh tolera, mas que confundem dash( ashshell compatível com Debian e Bourne).
Kevin Cantu
Outro ponto: #! / Bin / bash não restringirá qual versão do Bash você estava usando e existem algumas incompatibilidades de uma versão para outra, embora as piores tenham sido introduzidas há muito tempo na v2. Não conheço nenhuma incompatibilidade entre versões no modo de compatibilidade POSIX.
Charles Stewart
Qualquer pessoa deve se sentir à vontade para escrever para o shell que quiser, e você faz um argumento válido em relação ao POSIX #!/bin/shsozinho -ne. No entanto, preocupar-se com a compatibilidade do POSIX não deve ser o tipo de consideração rotulada como 'obcecada'. A chamada de shpadrões traça com o debian / ubuntu, e já faz um tempo. Eu sei que isso não se qualificaria como 'garantido', mas raramente consideraria algo portável 'garantido'. Eu ficaria ainda mais reservado com um 'shell script'.
JM Becker
6

Qual shell? Escolha aquele com a melhor relação "facilidade de uso" vs "aborrecimentos" ...

Se você não encontrar exemplos e explicações gerais suficientes para o seu shell "Maserati", seu desempenho extra pode ser mais um problema do que um bônus ...

Achei este artigo / site interessante; pode valer a pena ler:
diferenças de shell do UNIX e como mudar seu shell

Peter.O
fonte
0

O zsh provavelmente tem mais algumas semelhanças com o tcsh do que o bash.

Vejo: http://zsh.sourceforge.net/FAQ/zshfaq02.html#l13

As pessoas costumam afirmar que o zsh pode fazer coisas que o bash não pode, mas não achei que fosse esse o caso. O que eu tenho visto é que, para zsh é mais fácil, construído em ou ativado por padrão, enquanto que em bash é um script addon, tem de ser ligado, ou é mais difícil.

(aviso: sou um usuário do bash que às vezes considerou mudar para o zsh)

KellyClowers
fonte
-3

Por alguns tipos de razões, eu costumava usar o tcsh, como o usei há 20 anos. Como eu sei, o bash é originário do sh, mas é claro, com muitas coisas do csh, mas o tcsh é originário do csh. Eu realmente gosto da conclusão do comando nos primeiros dias, mas ela está disponível na maioria dos shells agora. Para scripts, devemos nos ater ao / bin / sh?

David
fonte
6
Isso realmente não tenta responder à pergunta. É mais um comentário.
slm