こんにちは、
InfraAcademyというインフラ学習サービスを運営しております、ryuと申します。
今回の記事では、shについて解説したいと思います。
「”〇〇.sh”のshって何?」
「/bin/shって何?」
「シェルって何?」
このような疑問にお答えしようと思います。
目次
shとは何なのか?
shとな何なのでしょうか?
「sh」とはシェルスクリプトの略であり、Unixシェルの一つである「Bourne Shell(ボーンシェル)」のことを指します。
そもそもシェルとは?
shとは、シェルの1種です。
そもそもシェルとは、何なのでしょうか?
シェル(shell)とは、オペレーティングシステムとユーザーの間にあるインターフェースです。ユーザーがコマンドを入力すると、そのコマンドを解釈し、適切なシステムコールやプログラムの実行を行う役割を担っています。
シェルには、以下のような様々な種類があります。
種類 | 特徴 |
---|---|
Bourne Shell (sh) | 初期のUnix標準シェル。シンプルで軽量な設計。 |
C Shell (csh) | C言語に似た構文を持ち、プログラマーにとって使いやすい。スクリプト言語としての機能が強化。 |
Korn Shell (ksh) | Bourne Shellの機能を強化し、C Shellの便利な機能も取り入れている。高い互換性と効率性が特徴。 |
Bourne Again Shell (Bash) | Bourne Shellの拡張版。コマンド履歴、コマンド補完、エイリアスなど多くの追加機能を提供。 |
Z Shell (zsh) | Bashやksh、cshの機能を統合。高度なコマンド補完やプロンプトカスタマイズが可能。 |
上記のように、shはさまざまな種類の1つで、Linuxの前身であるUnixの標準シェルです。
shの特徴
shは、1979年にスティーブン・R・ボーンによって開発されたシェルで、Unixの標準シェルとして広く使われました。シンプルで軽量な設計が特徴です。
このシンプルさは、システムの起動スクリプトや基本的なシステムタスクの自動化に適しています。スクリプトの先頭に#!/bin/shと記述して、スクリプトをshで動作させます。(スクリプトにはbashもよく使います)
また、shは多くのUnix系システムで標準的にインストールされているため、スクリプトの互換性が高いです。つまり、異なるPC間にスクリプトをコピーしても動作します。shには、互換性が高いという特徴もあります。
shの使い方
ここでは、shの使い方について解説します。
シェルをshに切り替える
現在、多くのLinuxのシェルはbashを使っていると思います。bashからshに切り替える場合は、shコマンドを実行します。
sh
切り替わったかどうかの確認は、以下のコマンドを実行します。
echo $0
→shと表示
shから元のシェルに戻す
shコマンドを実行すると、シェルはshに変わります。そこから元のシェルに戻すには、exitコマンドを実行します。
exit
シェルが戻ると、ターミナルの表示が変わっていると思います。
拡張子としてのsh
shは、〇〇.shのように拡張子として使われることがあります。これは、ファイルがシェルスクリプトであることを表しています。
スクリプトがシェル(特にshやbash)で実行されるものであるため、拡張子が.shとなっています。
シェルスクリプトの先頭
シェルスクリプトは以下のように記述します。以下のコードでは、”This script uses Bourne Shell”という文字列を表示しています。
#!/bin/sh
echo "This script uses Bourne Shell"
シェルスクリプトの1行目には、#!/bin/shのように、どのシェルで動作させるのかを記述します。これをシバンと呼びます。
シェルスクリプトは、shかbashのシェルを使うことが多いため、以下の2つをシバンとすることが多いです。
- #!/bin/sh
- #!/bin/bash
shとbashはどちらがいいのか?
ここまで、shについて詳しく解説しました。
shは、シンプルで軽量な設計のシェルです。現在では、bashというシェルが使われていることが多いです。
なぜbashがよく使われているのでしょうか?ここからは、shとbashの違いについて解説します。
shのメリット・デメリット
shのメリットは、シンプルで軽量であるところです。
しかし、現代的なシェルに比べて機能が少なく、高度なスクリプト作成には不便な場合があります。またコマンド補完やコマンド履歴といったユーザーフレンドリーな機能も無いため、コマンドラインの使用には不便に感じると思います。
bashのメリット・デメリット
bashは、shの拡張版であり、コマンド履歴、コマンド補完、エイリアス、複雑な条件分岐やループ、配列、正規表現のサポートなど、豊富な機能を提供します。
現在、bashはLinuxディストリビューションのデフォルトのシェルとして広く使用されています。
しかし、shに比べてリソースを多く消費することがあります。
どちらを選ぶべきか
shとbashには、上記のようなメリットやデメリットがあります。
普段のLinuxの操作であれば、bashを使うと良いと思います。
また、シェルスクリプトを作成する際、高度な処理が必要な場合はbashを使い、シンプルな処理の場合はshを使えばよいでしょう。
用途や環境に応じて適切なシェルを選ぶことが大切だと思います。多くの場合では、bashが使われますが特定の条件や要件に応じてshを選ぶことも有効です。
まとめ
今回の記事では、shとは何なのかについて解説しました。
「sh」とはシェルスクリプトの略であり、Unixシェルの一つである「Bourne Shell(ボーンシェル)」のことです。shは軽量でシンプルな設計が特徴です。
現在は後継のbashがよく使われていますが、両者のメリット・デメリットを把握して適切に使用しましょう!
当ブログでは、このようなITに関する記事を発信しているので興味のある方は引き続きご覧ください。