Unixシェルの比較


9

主要なUnixシェル(bash、ksh、tcsh、zsh、その他?)のうち、相互に使用する説得力のある理由はありますか?

  • 最もインタラクティブ/コマンドラインフレンドリーなのはどれですか?
  • スクリプトを作成する上で最も役立つ/直感的なものはどれですか?
  • 1つのシェルが提供する、他のシェルが提供しない主要な組み込み機能はありますか?
  • これらのシェルのいずれかは、あるタイプの機能には本当に良いのですが、別のタイプの機能にはありませんか?それとも、それらはすべてかなりバランスのとれた/柔軟ですか?
  • それは単に個人的な好みの問題ですか?

誰かが望むなら、私はこのコミュニティウィキを作ることができます。

回答:


17

電流:

  • bash— Bourneシェル、ほとんどのLinuxディストリビューションのデフォルトシェル。まともな機能。
  • zsh —最も機能が豊富ですが、まだほとんど使用されていません。
  • ksh — Solaris、AIX、およびその他のいくつかのuniceのデフォルトシェル。
  • tcsh —さまざまな* BSDフレーバーuniceのデフォルトシェル。

歴史的:

  • sh—オリジナルのBourneシェル(1977年リリース)。bashに置き換えられました。
  • csh—オリジナルのCシェル(1978年リリース)。tcshおよびkshにより廃止。

bash、ksh、およびzshはsh構文から派生し、tcshはcsh構文から派生することに注意してください。これは2つのまったく異なる構文です。

機能チャート(wiki)。


ほとんどのスクリプトは、通常、shを介してスクリプトを起動する方がbashよりもはるかに高速であるため、shに準拠するように記述されています。
Mikeage 2009年

どのようだ?Linuxでは、/ bin / shは/ bin / bashへのシンボリックリンクです。
vartec 2009年

2
/ bin / shが/ bin / bashへのシンボリックリンクであるとは限りません
Brad Gilbert

1
bashを「sh」としてインスタンス化すると、bashコマンドのサブセットをサポートする「sh」モードで実行されます。「sh」構文はPOSIX標準だと思います。
duffbeer703 2009年

Debianでは、「/ bin / sh」の代わりに「ダッシュ」を使用できます。
09年

9

fishは、おそらく他の機能よりも興味深い新しいシェルです。必ずしもより多くの機能を備えているからではなく、デフォルトで機能するだけでなく、魚が使いやすさを追求しているためです。

いくつかのスクリーンショット( 1234)一般的なアイデアを与えるのに十分です。

私のMacでは、fishがデフォルトのシェルになっています。図を行きます。


2

sh/ 以外のシェルを学ぶつもりならbash、あなたは単にzsh。それが代替シェルの中で最もパワフルで機能満載であると真剣に争う人はいません。もちろん、それが肥大であるかどうかは、まだ議論の余地があります。

私はについて良いことを聞いたことがfishありますが、それらに悩まされる努力をしたことはありません。

私が知っている管理者は、すべての犠牲を払って回避すべき忌まわしいものであるcshと考えtcshています。どちらのシェルを経由するよう強制されたこともないにもかかわらず、私はそれらに同意します。


2

bashは最も一般的なもの(一般にLinuxのデフォルト)の1つであるため、よく知っていることをお勧めします。個人的には、インタラクティブシェルとしてzshが大好きです。それは素晴らしい補完機能を備えています。たとえば、ホストのリストを設定して、ssh Ser [tab]のような操作を行うと、それらのホストの1つをタブでオートコンプリートしようとすることがわかります。また、再帰的な展開が含まれているため、現在のサブディレクトリにあるすべてのjpegファイルを検索する場合は、を使用できますls -ld **/*.jpg。zsh(人の.zshrcファイルを検索)には多くの楽しい機能があり、「bash互換」に設定できるため、2つを簡単に切り替えることができます。これをGNU Screenと組み合わせると、コマンドラインを操作するのが非常に楽しくなる場合があります。


1

他の質問を忘れないでください最も一般的なUnix / Linuxシェル -最も人気のあるシェルは、おそらく理由で最も人気があります;-)

それだけの価値があるので、ほとんどの人はシェルを頻繁にオフに切り替えないため、さまざまなオプションを適切に比較することは困難です。さまざまな人々がお気に入りのシェルの美徳を支持しているのを目にする可能性が高くなります。さまざまなシェルについて聞いたことがほとんどないのですが、それらはすべて同じ基本機能(I / Oリダイレクト、コマンド履歴など)を提供しているため、個人の好みが大きなコンポーネントである可能性があります。


1

言及されていないZSHを使用する大きな理由は、viモードとemacsモードです

シェルでviマッスルメモリを使用するのが大好きな人にとって、これはキラー機能です。

そして、emacsを好む人のために、それらのキーバインディングを使用することもできますが、真のemacs-believersはおそらくemacsが彼らのお気に入りのシェルであると言うでしょう。

;-)


0

日常の使用に対する好みは、実際には個人的な好みの集まりですが、スクリプトを書くときは、移植性のためにposixに準拠するようにしています。


0

ヘッズアップと同様に、Ubuntuはデフォルトで "sh"を "dash"に設定しているため、POSIX互換性で過去にいくつかの問題が発生します。どうやら、echoコマンドは少し異なります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.