どのシェルを使用する必要があります-tcsh vs bash?[閉まっている]


30

私はtcsh今長い間使っています。しかし、何かを探しているときはいつでも、指定されたメソッドがbash特定のものであることがよくあります。シェルスクリプトの構文でさえ、2つでは異なります。

私がインターネットで検索と学習を経験bashしたことから、より一般的なシェルが使用されているようです。このサイトのタグ付けされた質問の数でさえ、bashタグ付けされtcshた質問の数よりもはるかに多い(現在5倍)。

だから、bashに切り替えるべきかどうか疑問に思っています。どう思いますか?

なぜ固執するtcsh必要があるのbashですか


3
誰か bashに切り替えたことを聞いたことはありません。通常はbashがデフォルトであるため、bashを使用してから、より良いものに切り替えます。)
Michael Mrozek

6
@Michael:さて、OS Xはバージョン10.3でtcshからbashに切り替えたので、bashに切り替える人の1つのケースです。
sepp2k

5
使用する必要がありますzsh(OS Xに切り替える必要があります)
-xenoterracide

6
しかし、dashそれらのためのスクリプトを書くことは、ほとんど何でも動作するはずです。
xenoterracide

2
みんなが提案しているのはやや面白いと思うzsh。同時に、それは本当にopsの質問に答えていないので、面白くありません。これが、私がzsh応答をコメントではなくコメントにした理由です。ただし、tcshのシェルスクリプトの作成方法の学習に問題がない限り、わかっていることを実行してください。使用に問題がある場合はtcsh、こちらに問題を投稿してください。ただ切り替えないでください「原因。デフォルトでより多くの場所にインストールされるため、bashの投稿が多くなりますが、改善されません。
xenoterracide

回答:


22

bashを学んだ後、tcshが少し後退していることがわかりました。たとえば、bashで簡単にできることは、tcshでは難しいと思っています。tcshに関する私の質問。インターネットのサポートとドキュメントは、bashの方がはるかに優れており、tcshの場合は非常に限られています。bashに関するO'Reillyの本の数は素晴らしいですが、tcshに似たものは見つかりませんでした。


26

実際には、に移動する必要がありますzsh!それは本質的に後方互換性があり、すべての有用性をbash備えており、驚くばかりの大きな助けとなります。さえあります(私はそれを読んで回りませんでしたが)。

使いすぎない理由の1つを認めますが、複数の新しいインストールで常に作業している場合を除き、実際には適用されません。特に最も重要な違いを知っている場合。しかし、これは間の違いに本当に似ていると。あなたは素朴になりたくありませんが、実際には大したことではありません。筋金入りのユーザーであっても、その逆をたどることができます。zshbashvimvivimemacs


20

POSIX準拠のシェルhttp://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.htmlに切り替える必要があります。これは、bash、ksh、dashのいずれかですが、zshではなく、tcshでもありません。cshがスクリプティングの不適切な選択であると宣言されてから長い時間が経ちました:http : //www.faqs.org/faqs/unix-faq/shell/csh-whynot/、tcshはその分野ではそれほど違いはありません。

スクリプトを作成するとき、移植性のないものに再びロックされたくない場合は、POSIXのみの構造を使用してください(つまり、バシズムなどを避けてください)。


7

取りつかれている互換性にはポイントが欠けていると思います。#!/bin/sh最上位に配置して.sh拡張子を使用してすべての互換性を確保しようとしても、bash以外ではテストしない場合、互換性のあるスクリプトは保証されません。ちょうど使用することをお勧め#!/bin/bashして.bash、ユーザーが実際に本物の要件を知っているので。

zshtcsh、またはbashより優れた何かを知っていて、それに関する優れたリファレンスマニュアルがある場合は、遠慮しないください。人々がいくつかのスクリプトを実行できるようにperlまたはpythonをインストールすることを期待しているように、彼らはあなたのあいまいなシェルのインストールも処理できます!:D


1
/bin/shtcshはcshから派生したシェルですが、実際にはkorn互換のシェルを指すことは保証されていません。/bin/shすでにbashまたは他の互換性のあるシェルを指している可能性が高く、ユーザーシェルを変更しても影響を受けないことはほぼ確実です。cshとshは完全に互換性がありません。
マチェイピエチョトカ

1
何が保証されているのか分かりません。Bash-as- / bin / shが許容するが混乱させるdash(Debian ashとBourne互換シェル)Bash-ismが散らばっている "/ bin / sh"のスクリプトを書いている人がたくさんいることは知っています。
ケビンCantu

もう1つのポイント:#!/ bin / bashは、使用しているBashのバージョンを制限せず、バージョン間でいくつかの非互換性がありますが、v2ではかなり前に導入されました。POSIX互換モードのバージョン間の非互換性については知りません。
チャールズスチュワート

誰でも好きなシェルを自由に書くことができますし、POSIX #!/bin/shだけに関しても有効なポイントを作ることができます-ne。ただし、POSIXの互換性を心配することは、「取りつかれている」というラベルの付いた考慮事項の種類であってはなりません。shdebian / ubuntu を使用してデフォルトのダッシュを呼び出すと、しばらくの間使用できます。私はそれが「保証された」とみなされないことを知っていますが、移植性が「保証された」と考えることはめったにありません。私は「シェルスクリプト」でさらに控えめになります。
JMベッカー

6

どのシェル?「使いやすさ」対「面倒」の比率が最も高いものを探してください...

「Maserati」シェルの一般的な例と説明が十分に見つからない場合、追加のパフォーマンスはボーナスよりも問題になる可能性があります...

私はこの記事/サイトが面白いと感じました。読む価値があるかもしれません:
UNIXシェルの違いとシェルの変更方法


0

zshには、bashよりもtcshとの類似点がいくつかあります。

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

多くの場合、zshにはbashにはできないことができると言われますが、そうではないことがわかりました。私見たのは、zshの方がデフォルトで簡単に組み込まれ、オンになりますが、bashではアドオンスクリプトであるため、オンにする必要があるか、より難しいことです。

(免責事項:私は時々zshへの切り替えを検討しているbashユーザーです)


-3

何らかの理由で、20年前よりもtcshを使用していました。私が知っているように、bashはshから始まりますが、もちろん多くのcshのものがありますが、tcshはcshから始まります。私は初期のコマンド補完が本当に好きですが、現在ほとんどのシェルで利用可能です。スクリプトについては、/ bin / shに固執しますか?


6
これは実際に質問に答えようとしません。それはもっとコメントです。
slm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.