現場で使えるシェルスクリプト入門1 shebang(シバン・シェバン)

シェルスクリプト IT

この連載では「現場で使えるシェルスクリプト入門」について解説していきます。
シェルスクリプトを覚えると、手入力していた Linux の定型作業を自動化できてとても便利です。

例えば、

  • バックアップ
  • ファイル送受信
  • デプロイ作業

など、大抵の作業は自動化できます。 タイプミス防止、手順漏れの防止、作業時間の短縮などメリットも多く、 Linux を扱う上で必須のスキルと言えます。

シェルスクリプトとは?

そもそもシェルスクリプトとは何かというと、 シェル(bash などのコマンド解釈プログラム)に実行させる命令の集合です。

中身はただのテキストで、普段ターミナルで打つコマンドを並べたり、if 文やループで処理を制御したりします。

まずは shebang を書く

先ず始めに何をやるかというと、シェルスクリプトの1行目にshebang(シバン・シェバン)と呼ばれる行を追加します。

#!/usr/bin/bash

これは「このスクリプトは bash で実行してね」という宣言で、OS がスクリプトをどう扱うかを決める重要な設定です。

このbashのパスは「type -a bash」コマンドで探すことができます。

# type -a bash
bash is /usr/bin/bash
bash is /bin/bash

先頭に表示されるのがその環境で最初に使用されるbashコマンドになります。
type -aコマンドを使うとすべてのパスが表示されるので、他のbashを使いたい場合はそのパスをshebangに指定してください。

マルチ環境で作成したシェルスクリプトを動かしたい場合は、以下のようにshebangを指定します。こちらで記述すると、環境ごとに異なる bash の場所を自動で探してくれます。

#!/usr/bin/env bash

試しに以下のコードをtest1.shに記述します。ちなみにシェルスクリプトの拡張子は慣習的に.shを使用します。

#!/usr/bin/bash

echo "Hello!!"

test1.shに所有者(u)だけが実行できる権限(x)を付与します。

# chmod u+x test1.sh

実行権限「x」が付与されたことを確認します。

# ll test1.sh 
-rwxr--r-- 1 root root 37 Apr 28 01:57 test1.sh*

他のユーザーに「読み取り(r)、書き込み(w)、実行(x)」をさせず、オーナーだけに「読み取り(r)、書き込み(w)、実行(x)」を許可する場合は、「chmod 700 test1.sh」で権限を付与します。

# chmod 700 test1.sh
# ll test1.sh
-rwx------ 1 root root 31 Apr 28 02:18 test1.sh*

シェルスクリプトを実行します。
カレントディレクトリはパスが通っていないので、先頭に「./」を付けてカレントディレクトリを指定します。
カレントディレクトリ以外に保存している場合は、そのパスを指定してください。

# ./test1.sh
Hello!!

「Hello!!」と出力されればOKです。

コメント

タイトルとURLをコピーしました