web-dev-qa-db-ja.com

Unixシェルの比較

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

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

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

9
Andy White

電流:

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

歴史的:

  • sh—オリジナルのBourne Shell(1977年リリース)。 bashによって廃止されました。
  • csh—オリジナルのCシェル(1978年リリース)。 tcshとkshによって廃止されました。

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

機能チャート(wiki)

17
vartec

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

いくつかのスクリーンショット( 12 、、 4 )で、一般的な考え方を理解できます。

魚は私のMacのデフォルトのシェルになりました。図に行きます。

9
Peter Hilton

sh/bash以外のシェルを学習する場合は、zshを使用することをお勧めします。代替シェルの中で最も強力で機能満載だと真剣に争う人はいないと思います。もちろん、それが単なる膨張であるかどうかはまだ議論の余地があります。

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

私が知っている管理者は、cshtcshを絶対に避けなければならない忌まわしきものだと考えており、どちらのシェルにも強制されたことはないにもかかわらず、同意します。

2
kquinn

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

2
Kyle Brandt

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

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

1
David Z

言及されていないZSHを使用する説得力のある理由はviモードとemacsモードです

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

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

;-)

1
Somantra

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

0

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

0
lImbus