支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


bashを知る前の前提知識

bashとはを開発する前に必要な知識として、シェルとは何かということがあります。シェルとはOSと対話するための窓口の様な役割を行うインターフェースのことです。ユーザーはターミナルと呼ばれる画面に命令文を書きます。その命令文をカーネルと呼ばれる核のようなものが理解しなければならないのですが、カーネルが理解できるように解釈を変更するのがシェルです。このようにシェルはカーネルを包む貝のようだというところから名付けられています。シェルの役割を一言で表すと人間行った入力情報をコンピューターに伝えるものです。そして実はシェルといってもいくつもの種類があります。別名Bシェルとも呼ばれるshや、C言語に似た構造を持つことからCシェルとも呼ばれるcsh、Bシェルを基盤とし、機能拡張を行ったbash、CシェルにTenexの機能を持ち込んだtcshなどがあります。本記事ではその中でもbashについてより詳しく解説していきます。

bashとは

bash(バッシュ)とは「Bourne Again Shell」の略です。Linuxでコマンドの命令文を記述したシェルを実行するときなどに使われます。bashはLinuxで標準でされています。拡張子は「.sh」です。bashはシェルスクリプトの一種です。よくシェルスクリプトをシェルと呼ばれることがありますが、これは厳密には間違いです。複数のコマンドや、条件分岐やループ処理等を使用し、一連の処理を実現するプログラムのを組む時ものをスクリプトと呼び、その中でもbash、zsh などのシェルを利用し、シェルによって解釈または、実行されるスクリプトなので、bashはシェルスクリプトと呼ばれています。

シェルスクリプトの特徴

シェルスクリプトにはコンパイルという工程がありません。コンパイルとは機械語への翻訳作業のことです。Javaなどはコンパイルしなければ実行できません。シェルはインタプリタです。上から順番にコマンド、制御文、変数などを解釈しながら進んでいく特徴があります。基本的にインタプリタで、コンパイルが必要ないということなので、即実行結果がわかるという特徴があります。そういった部分では楽な物と言えます。反対にコンパイルを行う言語に比べて処理速度は落ちます。なので、シェルスクリプトは大規模な開発には向いていないものです。大規模な開発はJavaの方が向いています。あくまで、シェルスクリプトはコマンドの羅列の面倒さを解消してくれるもの程度に考えておくのがよいでしょう。

bashを用いたシェルスクリプトを組んでみる

bashでシェルスクリプトを組む場合まずはシバンと呼ばれるものを書く必要があります。このシバンは一言で言うとスクリプトを実行するインタプリタを指定するものです。この意味がよくわからないという人は、これは「このシェルスクリプトはbashによって解釈および実行される」ということを伝える為に書くもの、と解釈しておけば問題ありません。シバンは「!#/bin/bash」などのように書かれます。その後、シェルスクリプトの実行内容を組みます。今回は簡単に画面に「Hello World」と表示させるbashを作るとこととします。その場合は「echo “Hello World”」と書けば良いです。Javaであれば「System.out.println(“Hello World”)」の様な書き方なので、似ていませんが、PHPでは「echo “Hello World”;」なのでPHPの文法に似ていると言えるでしょう。そして最後に「exit 0」と書けばbashは終了となります。この引数の0は正常に処理を終了するという意味です。あとはhello.shなどで保存しておけば「$bash hello.sh」で、利用することができます。その結果実行内容は「Hello World」となります。今回は簡単な出力のみの解説でしたが、シェルスクリプトを活用するともっと複雑な処理なども行えます。興味の湧いた方は調べてみてはいかがでしょうか。

まとめ

いかがだったでしょうか。今回はシェルとは何かといった解説から、シェルとシェルスクリプトの違いや、シェルスクリプトの特徴、bashの解説そして具体的な使い方の一部の解説まで行いました。シェルスクリプトを使いこなせることでコマンドの自動化などの恩恵をうけることができます。シェルスクリプトを利用したAPI試験などを行う場合、バグが出た時の再試験が楽、バグの再現が楽、一部シナリオの違うテストケースの時のソースを少し変えるだけなので楽、などのメリットがあります。初めのうちは何に使うのか実感しにくいし、学習の優先度は低くなりがちになってしまいます。プログラマーを目指す人は学んでおいて損は無いかと思われますので、ぜひ詳しく学習してみてください。最後までお読みいただき有難うございました。