bashとは?シェルの概要から他のシェルとの違いまで解説!
shell programming
bashとは?シェルの概要から他のシェルとの違いまで解説!
アンドエンジニア編集部
2021.07.28
この記事でわかること
bashはBourne Shellのフリーソフトウェア版として登場し、高機能化が図られたシェルです
シェルは対話型としてもシェルスクリプトとしても利用可能です
bashはシェルスクリプトとして利用する機能は豊富で、システム運用自動化に活用可能です

bashとは?

shell programming

bashとはUNIX系システムで用いられているシェルで、フリーソフトウェア財団(Free Software Foundation、FSF)のGNUプロジェクトにより開発されました。bashとは、Bourne-again shellの頭文字をとった名称です。簡単に言うと、bashはBourne Shellのフリーソフトウェア版として機能を継承しつつ、C ShellやKornShellの機能を取り入れたシェルと言えます。

現在、bashはLinuxMacOSおよびMicrosoft Windowsでも対応する代表的なシェルと位置づけれています。bashの関連情報は以下のサイトから入手可能です。 参考:GNU Bash

シェルとは?

シェルとは、オペレーティングシステム(OS)の操作を行うためのコマンドインターフェイスを指します。OSをカーネル(核)と言う際に、その外側のインターフェイス機能を対比してシェル(殻)と呼んでいます。シェルは対話的(インタラクティブ)ユーザー操作要求を解釈し、必要な処理を実行します。

シェルのコマンドインターフェイスは、CLI形式のコマンドラインシェルが多くを占めています。CLIとはコマンドラインインターフェイス(Command Line Interface)の略です。コマンドラインシェルはシェル自体が解釈できる組み込みコマンドと、外部のコマンドやアプリケーションを起動する外部コマンド呼び出しが可能です。

シェルスクリプトとは?

シェルスクリプトとは、シェルで解釈される一連の手順から成るスクリプト言語を指します。シェルはコマンドインタプリタ機能があり、コマンド解釈を逐次実行します。そのため、CLIからの対話型実行、並びにシェルスクリプトを用いた一括実行が可能です。

CLIのメリットは、運用管理における作業手順の標準プロセス化が可能なことです。具体的には、作業の操作をコマンドラインに記述し実行できますので、スクリプト化によるバッチ処理や一括実行が可能です。このことにより、スクリプト実行による作業品質の均一化が可能です。さらに、複数の作業手順をスクリプト実行することで、運用管理の自動化が期待できます。

以上のことから、シェルの最大のメリットシェルスクリプトが実行できることと言えます。

他の代表的なシェルは?

シェルは現在までに多くの派生版や改良版が登場しています。以下に、bash以外の代表的なシェルを紹介します。

Bourne Shell(sh) Bourne Shellは、1977年に登場したシェルです。古くから使われていますがスクリプト言語はC言語と異なっています。対話的に操作する場合にコマンド編集等の機能が実装されていませんでした。

C Shell(csh) C Shellは、BSD UNIXで配布されたシェルです。スクリプト言語はC言語に近い体系を取っています。同様に、C ShellはBourne Shellと比較してヒストリ機能やエイリアス機能を実装したことで、対話的な操作性が大幅に向上しました。加えて、ジョブコントロール機能によりフォアグランドジョブとバックグラウンドジョブの管理を可能にしました。

KornShell(ksh) KornShellは、Bourne Shellの上位互換で、かつC Shellのメリットであった対話的操作の際のコマンド編集機能を実装したものです。

派生シェル FreeBSDやmacOSで組み込まれているtcshは、C Shellの流れを汲みシェルです。同様に、Z shell(zsh)はBourne Shellを拡張したシェルでbash・ksh・tcshの機能を取り込んでいます。

bashのインストール方法は?

bashLinuxやmacOSには導入済みですので、そのまま利用可能です。もし、異なるバージョンを試してみたい場合は、GNUからgzファイルをダウンロードしたり、正規ディストリビューションを利用したりすることが可能です。

Windowsの場合は、Windows 10 用 Windows Subsystem for Linuxをインストールすることで、Bash on Ubuntu on Windowsが導入されます。 参考:Windows 10 用 Windows Subsystem for Linux のインストール ガイド

Windows 10 用 Windows Subsystem for Linuxは開発者モードでインストールされますので、必要なセキュリティ対策等は十分ご留意ください。インストール後の再起動を経てコマンドプロンプトまたはPowerShellでbashと入力することで、bashのインストール設定が開始します。作業完了後、スタートメニューに「Bash on Ubuntu on Windows」が追加されます。

bashの使い方は?

usage

bashは現在デフォルトシェルとして広く利用されています。bashのリファレンスマニュアルはGNUで配布されています。しかしながら、リファレンスマニュアル膨大ですので理解に時間を要します。ここでは利用方法の要点を中心に説明していきます。 参考:Bash Reference Manual

bashの操作方法は?

bash対話型で実行することも可能ですし、スクリプトファイルを読み込んだりリダイレクト機能を用いて入出力先を変更したりすることも可能です。入力した文字は、空欄および#で始まるコメント行を除外して解釈され、実行されます。

システムのログインシェルとしてbashが設定されている場合は、そのままbashのコマンド入力が可能です。同様に、外部コマンドとしてbashを起動したり、シェルスクリプトの1行目のコメント行に実行プログラム名としてbashを #!/bin/bash のように明示的に指定したりすることでbashが起動されます。

bashのスクリプトを作成するには?

bash対話型で動作する他、シェルスクリプトと呼ばれるスクリプトファイルを読み込むことができます。スクリプトファイルはテキスト形式で作成しますので、viエディタ等普段利用されているエディタで作成します。

シェルスクリプトではbashの環境変数に応じた処理の追加や、コマンド解釈で必要とされる引用ルールに応じた文字列を引数として渡すことができます。bashではシェル組み込みコマンド外部コマンドを適宜実行させることで、複雑な処理を実行可能です。さらに、複合コマンドを用いてより大規模な処理を登録することが可能です。

bashの引用ルールは?

bashでは他のシェル同様に文字列の引用が可能です。コマンド引数とする際に必要な引用ルールを選択します。

エスケープ文字(\)一重引用符(’)二重引用符(”)ANSI-C引用符(アラート、バックスペース、改行、タブ、8進16進数字等)

bashのシェル組み込みコマンドは?

bashのシェル組み込みコマンドは、Bourne Shellから継承されたコマンドbash固有のコマンドからなります。

Bourne Shellから継承されたコマンドは以下の通りです。 ・:(コロン)  何もしない ・.(ピリオド)  ファイル引数からコマンドを読み込み実行 ・break  終了 ・cd  作業ディレクトリの変更 ・continue  ループ続行 ・eval  ステータス評価 ・exec  シェルの置き換え実行 ・exit  終了 ・export  環境変数の設定 ・getopts  引数の解釈 ・hash  ハッシュ情報の生成 ・pwd  作業ディレクトリの表示 ・readonly  読み取り専用変数の設定 ・return  値を戻し終了 ・shift  変数のシフト ・test  exprの評価 ・times  シェルとチャイルドプロセスのユーザ時間とシステム時間の表示 ・trap  sigspecのトラップ設定 ・umask  シェルプロセスのファイル作成マスクの指定 ・unset  設定した変数や関数の削除

bash固有のシェル組み込みコマンドは?

bash固有シェル組み込みコマンド、並びにbashで拡張された組み込みコマンドは以下の通りです。

alias  変数の別名登録、表示 ・bind  編集キーマップの割り当て変更・表示 ・builtin  組込みシェルコマンドを明示的に実行 ・caller  サブルーチンコールの情報表示 ・command  外部コマンドの明示的実行 ・declare  変数の属性設定 ・echo  引数の出力 ・enable  シェルの組み込みコマンドの有効化・無効化 ・help  シェルの組み込みコマンドの情報表示 ・let  シェル変数の演算確認 ・local  ローカル変数の割り当て ・logout  ログインシェルの終了 ・mapfile  ファイルインデックスの作成 ・printf  指定した書式での出力 ・read  行単位入力 ・readarray  行単位入力値を配列に格納 ・source  Bourne shellの・と同等 ・type  コマンド名実行時の解釈表示 ・typeset  KornShellと互換性維持、declareと同等 ・ulimit  プロセスの制限設定と表示 ・unalias  aliasのリストから登録名を削除

その他シェルの属性変更と追加オプション設定のために、setshoptが組み込みコマンドとして用意されています。

bashの複合コマンドは?

bashでは複合コマンドを用いて、複雑な処理シェルスクリプトプログラミング実装することができます。

最初にループ構造として、以下のコマンドをサポートします。 ・until  終了条件の指定 ・while  繰り返し条件の指定 ・for  実行回数の指定

次に条件分岐として、次のコマンドをサポートします。 ・if  条件指定 ・case  パターンマッチング ・select  リスト選択

最後にグループ化コマンドでは、以下のコマンドをサポートします。 ・(コマンド)  コマンドをカッコで囲みサブシェル処理をグループ化します。 ・{リスト;}  現在のシェルコンテキストで処理をグループ実行します。

bashのジョブコントロール機能は?

bashではジョブコントロールのために、以下の組み込みコマンドが用意されています。

bg  ジョブをバックグラウンドで再開 ・fg  指定ジョブをフォアグラウンドで実行 ・jobs  ジョブの表示 ・kill  ジョブのシグナル終了 ・wait  指定プロセスの終了待機 ・disown  ジョブテーブルから指定ジョブの削除、シグナル設定 ・suspend  シェルの実行一時停止

bashに慣れたらシェルスクリプトに挑戦しましょう

script language

シェルスクリプトは、一連のコマンド操作を自動的に実行します。シェルスクリプトを起動するだけですから作業に不慣れな方にとっても実行可能で、作業品質の平準化が図られます。さらに、複雑な処理を条件処理することで、大規模で複雑な処理を実行可能です。この作業により、運用の自動化が近づきます。ぜひとも挑戦してみてください。

気になる人のXをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
はじめて転職される方へ
SE・システムエンジニア(IT/通信/インターネット) 求人一覧

編集部おすすめコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT