Quel shell dois-je utiliser - tcsh vs bash? [fermé]


30

J'utilise depuis tcshlongtemps maintenant. Mais chaque fois que je recherche quelque chose, je trouve souvent que les méthodes spécifiées sont bashspécifiques. Même la syntaxe des scripts shell est différente pour les deux.

D'après ce que j'ai expérimenté en recherchant et en apprenant sur Internet, bashsemble être le shell le plus couramment utilisé. Même le nombre de questions sur ce site balisé bashest bien plus (cinq fois plus actuellement) que le nombre de questions balisées tcsh.

Donc, je me demande si je devrais passer à bash. Qu'est-ce que tu penses?

Pourquoi devrais-je m'en tenir à tcshOU pourquoi devrais-je passer à bash?


3
Je ne pense pas avoir entendu parler de quelqu'un qui passe à bash; normalement, les gens utilisent bash parce que c'est la valeur par défaut et passent ensuite à quelque chose de mieux :)
Michael Mrozek

6
@Michael: Eh bien, OS X est passé de tcsh à bash dans la version 10.3, c'est donc un cas de personnes qui passent à bash.
sepp2k

5
vous devez utiliser zsh(vers lequel OS X aurait dû basculer)
xenoterracide

6
mais écrivez vos scripts pour dashceux qui devraient fonctionner à peu près n'importe quoi.
xenoterracide

2
Je trouve quelque peu amusant que tout le monde propose zsh. En même temps, ce n'est pas amusant car cela ne répond pas vraiment à la question des opérations. c'est pourquoi j'ai fait de ma réponse zsh un commentaire et non une réponse. Mais, à moins que vous ne rencontriez des problèmes pour apprendre à décortiquer le script tcsh, allez avec ce que vous savez. Si vous rencontrez des problèmes lors de l'utilisation, tcshpostez votre problème ici. Ne changez pas juste parce que . Il y a plus de messages bash car il est installé par défaut dans plus d'endroits, cela ne fait pas mieux.
xenoterracide

Réponses:


22

Après avoir appris bash, je trouve que tcsh est un peu en arrière. Par exemple, ce que je pourrais facilement faire en bash, j'ai du mal à le faire en tcsh. Ma question sur tcsh . Le support et la documentation Internet sont également bien meilleurs pour bash et très limités pour tcsh. Le nombre de livres O'Reilly sur bash est grand mais je n'ai rien trouvé de semblable pour tcsh.


26

En fait, vous devriez passer à zsh! Il est essentiellement rétrocompatible et il a toute l'utilité bashavec une grande aide impressionnante . Il y a même un livre (même si je n'ai pas réussi à le lire).

J'admettrai une raison de ne pas utiliser zshplus, bashmais à moins que vous ne travailliez constamment sur plusieurs nouvelles installations, cela ne s'applique pas vraiment. Surtout si vous connaissez les différences les plus importantes . Cependant, cela ressemble vraiment aux différences entre vimet vi; vous ne voulez pas être naïf mais pratiquement ce n'est pas grave. Même les vimutilisateurs inconditionnels peuvent trouver leur chemin emacset vice-versa.


20

Vous devez passer à un shell compatible POSIX http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html , comme l'un de bash, ksh, dash, mais pas zsh et certainement pas tcsh. Cela fait longtemps que csh n'a pas été déclaré un mauvais choix pour les scripts: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ , tcsh n'est pas très différent dans ce domaine.

Lors de l'écriture de scripts, assurez-vous d'utiliser uniquement des constructions POSIX (c'est-à-dire éviter les bashismes et autres) si vous ne voulez pas être à nouveau verrouillé dans quelque chose de non portable.


7

Je pense que la compatibilité obsédée manque. Si vous essayez de rendre tout compatible en mettant #!/bin/shen haut et en utilisant les extensions .sh , mais que vous ne testez jamais rien d'autre que bash , vous n'avez pas garanti un script compatible! Mieux vaut simplement utiliser #!/bin/bashet .bash pour que les utilisateurs connaissent réellement la vraie exigence.

Si vous connaissez zsh , tcsh ou quelque chose de mieux que bash et que vous avez un bon manuel de référence, ne vous retenez pas . Tout comme les gens s'attendent à installer perl ou python pour pouvoir exécuter certains scripts, ils peuvent également gérer l'installation de votre shell obscur! :RÉ


1
En fait, il n'est pas /bin/shgaranti de pointer vers un shell compatible korn alors que tcsh est un shell dérivé de csh. Il est probable qu'il /bin/shpointe déjà vers bash ou un autre shell compatible et il est presque certain qu'il ne sera pas affecté par le changement de shell utilisateur . csh et sh sont totalement incompatibles.
Maciej Piechotka

1
Je ne sais pas ce qui est garanti. Je sais qu'il y a beaucoup de gens qui écrivent des scripts pour "/ bin / sh" qui sont jonchés de Bash-isms que Bash-as- / bin / sh tolère, mais qui confondent dash(Debian's ashet Bourne compatible shell).
Kevin Cantu

Autre point: #! / Bin / bash ne contraindra pas la version de Bash que vous utilisiez et il existe des incompatibilités d'une version à l'autre, bien que la pire ait été introduite il y a longtemps avec la v2. Je ne connais aucune incompatibilité entre les versions en mode de compatibilité POSIX.
Charles Stewart

N'importe qui devrait se sentir libre d'écrire pour le shell de son choix, et vous faites valoir un argument valable en ce qui concerne #!/bin/shseul -nePOSIX. Cependant, être préoccupé par la compatibilité POSIX ne devrait pas être le type de considération étiqueté «obsédé». Invoquer le shtableau de bord par défaut avec debian / ubuntu, et ce depuis un certain temps maintenant. Je sais que cela ne serait pas qualifié de «garanti», mais je considérerais rarement la portabilité comme «garantie». Je serais encore plus réservé avec un «script shell».
JM Becker

6

Quelle coquille? Optez pour celui qui présente le meilleur rapport "facilité d'utilisation" vs "tracas" ...

Si vous ne trouvez pas suffisamment d'exemples généraux et d'explications pour votre coque "Maserati", alors ses performances supplémentaires peuvent être plus un problème qu'un bonus ...

J'ai trouvé cet article / site intéressant; ça vaut peut-être la peine d'être lu:
les différences de shell UNIX et comment changer votre shell


0

zsh a probablement quelques similitudes de plus avec tcsh que bash.

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

Les gens prétendent souvent que zsh peut faire des choses que bash ne peut pas, mais je n'ai pas trouvé que c'était le cas. Ce que j'ai vu est que pour zsh il est plus facile, construit ou activé par défaut, alors que dans bash est un script addon, doit être activée, ou est plus difficile.

(Avertissement: je suis un utilisateur bash qui a parfois envisagé de passer à zsh)


-3

Pour certaines raisons, j'ai utilisé tcsh, comme je l'ai utilisé il y a 20 ans. Comme je sais, bash est originaire de sh mais bien sûr avec beaucoup de choses csh mais tcsh est originaire de csh. J'aime vraiment l'achèvement de la commande au début, mais il est maintenant disponible dans la plupart des shells. Pour les scripts, faut-il s'en tenir à / bin / sh?


6
Cela n'essaie pas vraiment de répondre à la question. C'est plus un commentaire.
slm
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.