主要なUnixシェル(bash、ksh、tcsh、zsh、その他?)のうち、相互に使用するやむを得ない理由はありますか?
誰かが望むなら、私はこのコミュニティウィキを作ることができます。
電流:
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つのまったく異なる構文です。
sh
/bash
以外のシェルを学習する場合は、zsh
を使用することをお勧めします。代替シェルの中で最も強力で機能満載だと真剣に争う人はいないと思います。もちろん、それが単なる膨張であるかどうかはまだ議論の余地があります。
fish
について良いことを聞いたことがありますが、それらを気にする努力をしたことはありません。
私が知っている管理者は、csh
とtcsh
を絶対に避けなければならない忌まわしきものだと考えており、どちらのシェルにも強制されたことはないにもかかわらず、同意します。
Bashは最も一般的なものの1つであるため(通常はLinuxのデフォルト)、よく知っておくことをお勧めします。個人的には、インタラクティブなシェルとしてzshが大好きです。それは素晴らしい完成機能を持っています。たとえば、ホストのリストを設定できます。sshSer[tab]のような操作を行うと、それらのホストの1つをタブでオートコンプリートしようとすることがわかります。また、再帰的なグロビンも含まれているため、現在のサブディレクトリにあるすべてのjpegファイルを検索する場合は、ls -ld **/*.jpg
を使用できます。 zsh(人々の.zshrcファイルを検索する)にはたくさんの楽しい機能があり、「bash互換」に設定できるので、2つを簡単に切り替えることができます。これをGNU Screenと組み合わせると、コマンドラインを操作するのが非常に楽しくなることがあります。
他の質問を忘れないでください 最も一般的なUnix/Linuxシェル -最も人気のあるシェルはおそらく理由で最も人気があります;-)
価値があるのは、ほとんどの人がシェルを頻繁に切り替えることはないため、さまざまなオプションを総合的に比較するのは難しいでしょう。さまざまな人々がお気に入りのシェルの長所を支持しているのを目にする可能性が高くなります。さまざまなシェルについてほとんど聞いたことがありませんが、それらはすべて同じ基本機能(I/Oリダイレクト、コマンド履歴など)のいくつかを提供するため、個人的な好みが大きな要素になる可能性があります。
言及されていないZSHを使用する説得力のある理由はviモードとemacsモードです。
シェルでviマッスルメモリを使用するのが好きな人にとって、これはキラー機能です。
そして、emacsを好む人のために、それらのキーバインディングも使用できますが、本当のemacsを信じる人は、おそらくemacsが彼らのお気に入りのシェルであると言うでしょう。
;-)
日常の使用の好みは本当に個人的な好みのマザーですが、スクリプトを書くときは、移植性のためにposixに準拠するようにしています。
ヘッズアップと同じように:Ubuntuはデフォルトで「sh」を「dash」に設定しているため、過去にPOSIXの互換性に問題が発生していました。どうやら、echoコマンドはわずかに異なります。