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?


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.


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.


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.


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


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


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)


-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?


6
Isso realmente não tenta responder à pergunta. É mais um comentário.
— slm
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.