Bash、csh、およびtcshを使用しました。しかし、私は この質問 を尋ねました、そして、ジョナサンはcshが信頼されるべきでないと私に知らせました。それで、Linux Shellは開発に適しています。なぜ?
私はzshが好きです。
タブ補完だけでも価値があります。
Linuxで最も一般的なシェルはbashです。代替手段を使用する正当な理由がない限り、bashに固執するか、プロジェクトチームで最も一般的に使用されるシェル(または作業する必要があるシェルスクリプトの大部分)を使用することをお勧めします。
他の唯一の非常に一般的な候補はダッシュであり、Ubuntuプロジェクトでより広く使用されています。
csh を除き、これは本当に個人的な好みです。
双方向性の場合は、Zshを使用します。しばらくの間、私はBashタブ補完スクリプトのFreeBSDポートのメンテナーでしたが、Zshを初めて試した途端にそれを放棄しました。 Bashでできることはすべて実行できますが、より簡単かつエレガントになります。また、非常にBashのようなキーストロークを持つというNiceプロパティもあるため、Zshのないシステムを使用している場合は(Niceのように「感じ」なくても)実行できます。
スクリプトを作成するには、Bourne Shell(sh)を使用します。これはPOSIX標準のスクリプト言語であり、スクリプトはどこでも動作することがほぼ保証されています。 Bash、Zsh、およびその他のシェルには見逃せない素敵な拡張機能がありますが、それらは特定のセットアップに結びついています。他では絶対に実行しないと確信している個人使用専用のスクリプトについては、そのアドバイスを無視してください。ただし、それは考慮する必要がある本当のトレードオフであることを忘れないでください。
しかし、要約すると、Zsh。私はそれを試してみて、すぐに永久に切り替わらない人を誰も知りません。それは本当に良いことです。
Fish (Friendly Interactive Shell)は、他のほとんどのシェルに代わるニースです。一貫性のある構文、ニースのタブ補完、構文の強調表示があり、簡単にピックアップして使用できます(特に他のシェルの習慣がない場合)。また、優れたランタイムヘルプがあります。
欠点は、不安定に開発されており、ユーザーベースが小さい(ただし有用)ため、他のシェルとは大きく異なることです。 Shellイディオムとの後方互換性は優先事項ではありませんでした。
多くの場合、これは良いことです...多くの標準的なシェルは、常にそのように行われているという理由だけで、本当に愚かな方法を持っています。 「do/done」、「case/esac」、「if/fi」?これは魚がやる狂気です。
一見の価値があります。
私はあなたがCシェル以外の何かを使うべきだと提案した人だと信じているので、おそらく私のコメントを少し修飾し、「bashがインストールされていない限り、Linuxでbash、他のプラットフォームでKorn Shellそこにも)」。
エディターのように(vim
またはemacs
を好みます)、シェルの選択は一部は親しみの問題であり、一部は好みの問題です。 C Shellが好きな人はたくさんいますが、Bourne Shellやその派生物よりもプログラムが簡単ではないと思います。 .cshrcにあるものは、実際、exec /bin/ksh
(ログインシェルを実行したいので、まったく同じではありません-プロファイルなどを読み取ります)、しかし、Cシェルまたは派生物が情報に基づいた決定であれば、私は誰も非難しません。
Cシェル以外の何かを使用することに決めた場合、基本的にはBourne Shellキャンプにいます。POSIX規格では、期待される動作と、さまざまなシェル、つまりBourne、Kornを多かれ少なかれ指定しています。またはBorn Againシェル-いくつかの機能を追加(または、古典的なBourne Shellの場合は減算)します。コードをLinuxからHP-UX、SolarisまたはAIX(従来のAT&T派生Unixバリアントの存続するトリオ)に移動する必要がある場合、Kornを使用してシェルスクリプトを古典的なBourne Shellで記述することを検討する必要があります。シェルもかなり安全です。ただし、Linuxでは#!/bin/sh
およびBashを取得します。他のプラットフォームでは、Bourne Shellを取得します。
Korn ShellとBashを大きな問題なしで切り替えます-小さな問題はめったにありません。私はどちらの言語でも明確に定義されていないコーナーを避けている傾向があります-これは「両方で定義されている」という意味です。 Linuxを使用する場合のもう1つの問題は、GNUツールには従来のUnixバージョンよりも多くのオプションがあり、使用するシェルプログラミング構成ではなく、コマンドオプションのために移植性が失われる可能性があることです。他のシステムのマニュアルページへの経験とすぐにアクセスできることは非常に役立ちます。
私は通常bashにこだわるのは、まっすぐなshよりも友好的であり、半定期的に使用したすべてのディストリビューション(SuSE、RHEL、Ubuntu、Slackware)のデフォルトだからです。
ただし、移植性のあるシェルスクリプトを作成する場合は、すべてがreal shで実行されることを確認してください。
バッシュ。それは標準です。
Cshの問題は、 here で説明されているように、スクリプト作成がくだらないことです。インタラクティブなシェルとして使用すべきではない本当の理由はありませんが、ほとんどの人は、2つの異なるシェルを習得する必要があり、コマンドラインでスクリプトの一部を試すことができないので混乱しているので、最も簡単に使用できますすべてのために同じ。
対話型シェルの明らかな候補は、bash、dash、zsh、および{pd、} kshです。これらはすべて、いくつかのマイナーな拡張機能を備えたposix Shell標準を実装しています。インタラクティブな使用のために好きなものを選んでください。Linuxの標準であるという理由だけでbashを使用する傾向がありますが、それらはすべてメリットがあり、特にzshが人気があるようです。
移植性のあるスクリプトを作成している場合は、#!/ bin/shを使用し、必ず標準のposixシェル構文を使用してください。 bashとkshの両方で機能する場合は、おそらく標準です。非標準の/ bin/shがあるunixの古いバージョンがいくつかありますが、あなたがそうする必要があることを知らない限り、私はそれを気にしません。移植性の問題の多くは、スクリプトから呼び出すすべてのコマンドラインツールです。
Debianベースのsh
規格、そのDebian Almquist Shell dash
について言及した人はいませんでした。 POSIXに完全に準拠しており、起動が非常に速いため、Debian/Ubuntuは/bin/sh
。
したがって、インタラクティブシェルにはbash
を使用しますが、スクリプトにはdash
のみを使用します。そうすれば、私のスクリプトが少なくともPOSIXに準拠しており、他のPOSIXシェルで実行できることがわかります。 ...移植性はシェルよりも優れていることは知っていますが、どこに線を引きますか。
私は大きくありませんRuby user but http://Rush.heroku.com/ 面白そうです
Bashはシェルとして最も広く使用されているため、bashを使用することをお勧めします。bashを使用する可能性が高いのは、誰かから受け取るチュートリアルまたはヘルプです。しかし、すべてのスクリプトにzshを使用し始めており、スクリプトの点でbashよりもはるかに優れていることがわかりました。
Korn Shell(ksh)を使用しないでください。
完全なタイピングがあり、バックスペースキーを使用する必要がない場合を除きます。
私は実際にkshが好きです。 bshよりも一貫性があります。これは、cshコンストラクトをサポートしようとしないためです。私の経験では、tcshは他のシェルとの互換性が最も低く、それを避けています。 shにスクリプトを記述しようとしていますが、kshには、1行で変数をエクスポートして設定するなどの素晴らしい機能があります。 bashはフル機能で一般的であるため、bashとの互換性も維持しようとします。 「最適な」シェルを選択するよりも重要なポータブルシェルスクリプトを作成するには、この本を参照してください。
ポータブルシェルプログラミング:ブルースブリンによるボーンシェルの例の広範なコレクション(HP Professional Series)(ペーパーバック-1995年10月29日) Amazon.com
スクリプティングについては、しばらくの間ダッシュを使用してみて、移植性のあるものを感じてください。 bashを使用してシェルスクリプトを記述する場合は、スクリプトShebangでbashを明示的に宣言してください。
パーソナルコンソールを使用する場合は、実際に試してみてください。快適なものを見つけてください。使用するすべてのマシンのソースからコンパイルする必要のあるシェルを選択することにより、システム管理者の友人全員をエキセントリックにしてイライラさせます。
私は、完璧なタイピングに近いものを何も持たずに、常にpdkshを使用しています(おそらく、termcapを修正する必要がありますか?)。
kshは標準、cshは標準、bashは「標準」ですが、Linuxのみです。 kshをターゲットにした方が良い。
実際のスクリプトを書くために、私はksh
を好みます。これには、プログラミングと修正に役立ついくつかの拡張機能があります 私の悩みの1つ 。
bash
はインタラクティブセッションに対する私の好みですが、それは他の何よりも個人的な好みの問題です。 Bourneタイプのシェルであることを確認してください。
私もcsh、tcshからbashに来ました。違いはありますが、しばらくすると、少なくともCシェルと同じくらいすてきです。
スクリプトについては、ほとんどのUnix(Solaris、HP-UX、OSF/1(今までで最高のUNIX;)-現時点では)で利用可能であり、優れた機能を備えているため、kshを推奨します。 Kornを使用すると、ほとんどのスクリプトをプログラミングできます。散発的に、関数からの戻り値として数よりも多くを取得したい、または単純な配列に入れることができないデータがある、またはregegの場合、またはこれまで以上に優れた機能を備えたものが必要な場合、その後、Perlを提案します。
FISHが最適で、構文が強調表示され(存在しないコマンド用)、自動入力できると思います。そして、学ぶことは非常に簡単です。