web-dev-qa-db-ja.com

最も一般的なUnix / Linuxシェル

この質問は少しナイーブかもしれませんが、Unix/Linuxユーザーの間で最も人気のあるシェルが1つありますか?

以前の会社は基本的にtcshで標準化されていたので、どちらかが良いか悪いかを学びましたが、bashやkshなど、もっと一般的な傾向があるのであれば、それを学ぶべきかどうか疑問に思っています。

2
Andy White

Linuxの場合、bashと言いますが、古典的なUnixの亜種はcshを好むようです。

20
Michael Stum

スクリプトを必要なすべてのシステム(できるだけ多く)で実行したいので、これまでに出会ったすべてのUnixシステムに存在するBourne Shell(/ bin/sh)を使用してスクリプトを作成およびテストします。

一部のシステムでは、/ bin/shが実際にはbashであることに注意する必要があります(例:私のMac)。

5
chburd

それはPerlです。

古いsolaris2.6でも常にPerlを見つけます。また、Perlの記述は、シェルスクリプトの記述よりもはるかに移植性が高く、/ bin/shは大きく異なる可能性があることに注意してください。次に、csh/ksh/bashを作成する代わりに、機能Xのシェルのバージョンが間違っているサーバーを常に1つ見つけるので、Perlに切り替えました。少し冗長になることもありますが、作業の移植性は100%になります。

そして、シェル自体は何もしないと言う必要はありません。grep/ awk/sedのバージョンを修正する必要がない場合(そしてawkの実装が数十ある場合)、Perlのパターンマッチング、データ構造などが失敗します。普遍的です。

4
Benoît

Mac OS Xは、10.3リリースの前後でデフォルトのログインシェルとしてtcshからbashに切り替わりました。 Solarisは、デフォルトでrootの場合はsh、通常のユーザーの場合はcshになる傾向があります。

2
user448

私はScientific(CentOsのようにブランド変更されたRHEL)とUbuntu Linuxを実行していますが、tcshを使用しているので、私は「古典的なUNIXバリアント」(Michael Stumの回答から)のような人だと思います。

これは、Linuxを初めて使用したときに使用した(そして現在も使用している)ソフトウェアの一部がcshで実行するように設計されており、sh/bashで常にうまく機能するとは限らないという事実に起因します。それが私が学んだことであり、私はそれに固執しました。新しいアカウントを設定するときに最初に行うことは、デフォルトのシェルをtcshに切り替えることです。

私は問題なくbashを使用できますが、構文は2つのシェルタイプ間で同じではなく(i-moanのコメントとは異なり)、少し制限があると思いますが、実際にはtcsh構文を好みます。私はそれほど多くのシェルスクリプトを実行しないので、問題が発生したことはありません。

そうは言っても、他のコメント投稿者と同様に、bashが最も人気があることに同意します。これはおそらく、bashが長い間デフォルトであり、Davidが-で述べたように人々がデフォルトから切り替えることを気にしないためです。 nixシェルの比較 質問

2
dagorym

に対してシェルとして「tcsh」を使用することをお勧めします。 tcshでシェルスクリプトを書いても大丈夫だと思わせる傾向があります。そうではありません。

本当の魅力は「上矢印」コマンドラインの使いやすさのようですが、bashを使用するととにかくそれが得られます。

また、スクリプトのコーディングは、cshやtcshではなく、「sh」とその派生物(bashやkshなど)の方がはるかに簡単です。また、shはunixのフレーバーであり、bashは最初の選択肢のアドオンとして簡単に入手できることもわかりました。

Kshとbashの機能(変数配列やハッシュなど)を使用することは、企業全体に存在することを保証できない限り、警告します。

1
ericslaw

プライマリシェルとしてshを学ぶ

その結果、スクリプトは bash でも機能します

もあります..

zsh

ksh

tcsh

しかし、正直なところ、ほとんどのLinuxディストリビューションはshをbashにリンクしています(最も人気のあるスーパーセットとして)

1
Judioo

最も使いやすいシェルを使用しますが、他のシェルとその基本的な操作に精通している必要があります。 Oracle(または少なくとも私が知っているOracle DBA)はkshを使用して処理を実行する傾向がありますが、他の多くのスクリプト(インストーラーなど)はshで実行されます。

良い点は、ほとんどのディストリビューション(linuxまたは他の* nixバリアント)で多くのシェルを使用できるため、ログインしているシェル以外のシェルでスクリプトを実行できることです。

Linuxがbashをshよりもはるかに人気のあるシェルにしたので(少なくともそれらの「古典的なUNIXバリアント」では)、真のshはbashを支持するようになりつつあるようです。

私は現在、zshで実行して詳細を確認するように強制しています(通常、過去にbashまたはtcshを実行したことがあります)。それから私はkshをいじりますが、一度試してみて本当に気に入らなかったのですが。

0
Milner

確かに、bashはLinuxディストリビューションの間でかなり人気がありますが、UNIXのクロス管理者を目指しているのであれば、KSHが最適だと思います。 UNIXの複数のフレーバーを実行する私が働いたところはどこでも、それがデフォルトです。元のBourneShellよりも少し壊れていませんが、POSIXに準拠していない独自の機能(bash、csh、tcshなど)は導入されていません。

確かに、これが、Debianベースのディストリビューションが/ bin/shをダッシュ​​にリンクする傾向がある理由ですis POSIXに準拠しており、bashよりもはるかに少ないメモリ消費量です。残念ながら、何年にもわたってLinuxディストリビューション用に作成された多くのシェルスクリプトは、Shebang行に#!/ bin/shと書かれており、実際にはbashがシェルであると想定しており、bashでのみ使用できる機能を使用しています。

Bashは優れたエンドユーザーのシェルですが、メモリフットプリントが大きいため、シェルスクリプトには理想的とは言えません。

0
GodEater

私はkshを使用して多くのAIXサーバーを使用しています。これは、OpenBSDのrootのデフォルトのシェルでもあります。

可能な場合はいつでも、ユーザーアカウントのデフォルトのシェルをzshに切り替えます。

私はshまたはPerlスクリプトをできるだけ頻繁に作成します。

0
Benoit

私はLinuxに比較的慣れていません(約2年間Linuxを使用しています)。そして、私はほとんどの現代のディストリビューションがbashを使用していると思います。

ZSHについて良いことを聞いたことがありますが、BASHとの下位互換性があります。

これをチェックしてください リンク :BASHに対するZSHの利点の概要を説明します

0
Hofa

Bashは、最も人気のあるシェルIMEの1つです。

移植可能なシェルスクリプトを作成する場合は、非常に小さなシェルである/ bin/shを使用します。 bashが持つすべての機能を備えているわけではありません。一部のLinuxディストリビューションでは/ bin/shが/ bin/bashにシンボリックリンクされているため、シェルを作成する場合は注意が必要です。 Ubuntuには/ bin/shにシンボリックリンクされた/ bin/shがあり、これはすべての/ bin/shのもののみを実装します。/bin/dashで機能する場合は、shで機能します。

0
Rory

最も人気のあるのはbashです。最高はzshですが、多くの人に習慣を変えるように説得するのはbashよりもはるかに優れています。

Cshまたはshを使用するのは間違いです。強制された場合にのみkshを使用する必要があります(bashは使用できません)。スクリプトに優れた移植性が必要な場合は、shを使用して実装に固有の機能を認識するか、bashが非常に普及していることを検討してください。

私は、tcshをbashよりもはるかに快適にしている人々を見てきました。

スクリプトと同じシェルをインタラクティブに使用するのは理にかなっていると思います。新しく学習し、環境を制御できる人にはzshをお勧めしますが、すでに少し慣れている人にはbashをお勧めします。古いシェルが強制されたり、古いスクリプトの保守が強制されたりする可能性がある人は、sh、csh、およびkshに慣れてください。

私のコメントは、bashを定期的に使用し、時々zshに気づき、「それはかわいい」と言ってbashに戻り、レガシーの「要件」のために時々shまたはcshを使用せざるを得ないことに憤慨している人の偏見から来ています。

私がshと言うときは古いボーンシェルを意味し、cshと言うときは古いcshを意味することに注意してください。時々、これらはより現代的なシェルへのリンクです。

また、kshには2つのメジャーリリースがあり、機能セットにいくつかの重要な違いがあることに注意してください。

0
carlito