本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。
第3回 はじめてのシェルスクリプト実行:chmodとシバン(#!)を理解する

はじめに
第1回、第2回では、ターミナルに直接コマンドを打ち込んでその場で実行する方法を学びました。しかし、複雑な処理や毎日行う作業を毎回手動で入力するのは、手間がかかるだけでなくミスのもとにもなります。
そこで活用するのが「シェルスクリプト」です。一言で言えば、コマンドを書き溜めた「手順書」のようなものです。
第3回では、この手順書をテキストファイルとして保存し、OSに「プログラム」として認識させて実行するまでの一連の流れを解説します。ただ保存するだけでは動かない、UNIX系OS特有のルールである「実行権限」や、先頭に書く魔法の一行「シバン(Shebang)」についても詳しく見ていきましょう。ここをマスターすれば、作業自動化への第一歩を確実に踏み出せますよ!
この回で学ぶこと
- テキストファイルとしてスクリプトを保存する方法
#!/bin/shを付ける理由chmod +xで実行権限を付ける方法./sample.shで直接実行する方法sh sample.shで実行する方法- 2つの実行方法の違い
- 実行できないときの基本的な確認点
スクリプトを保存して実行する流れ
まずはファイルとして保存する
シェルスクリプトは、コマンドをテキストファイルとして保存したものです。
今回は、sample.sh という名前のファイルを作成して実行します。
先頭に #!/bin/sh を付ける
スクリプトの1行目には、次のように書きます。
#!/bin/shこの行は、このファイルを sh で実行するための指定です。
./sample.sh のようにファイルを直接実行するときに必要になります。
サンプルコード
sample.sh に次の内容を保存します。
#!/bin/sh
echo "Hello"
echo "This is my first script"実行手順
1. ファイルを作成して保存する
エディタで sample.sh という名前のファイルを作成し、次の内容を保存します。
#!/bin/sh
echo "Hello"
echo "This is my first script"2. sh sample.sh で実行する
まずは、sh コマンドでファイルを指定して実行します。
sh sample.sh実行結果は次のようになります。
Hello
This is my first script3. 実行権限を付ける
次に、ファイルを直接実行できるようにします。
chmod +x sample.shこのコマンドは、sample.sh に実行権限を付けます。
4. ./sample.sh で直接実行する
次のコマンドを実行します。
./sample.sh実行結果は次のようになります。
Hello
This is my first scriptコードの読み方
#!/bin/sh
1行目の #!/bin/sh はシバンです。
このスクリプトを sh で実行することを OS に伝えます。
echo “Hello”
文字列 Hello をそのまま表示します。
echo “This is my first script”
2行目と同じく、文字列を画面に表示する処理です。
複数の echo を並べると、上から順番に実行されます。
./sample.sh と sh sample.sh の違い
どちらもスクリプトを実行できますが、実行の仕方が異なります。
sh sample.sh
sh sample.shこの方法は、sh に sample.sh を読み込ませて実行します。
この場合は sh を明示しているため、通常は実行権限がなくても実行できます。
./sample.sh
./sample.shこの方法は、sample.sh というファイル自体を直接実行します。
そのため、次の2つが必要です。
- 実行権限が付いていること
- 先頭に
#!/bin/shが書かれていること
初学者がつまずきやすい点
保存しただけでは直接実行できない
ファイルを保存しただけでは、./sample.sh で実行できないことがあります。
まず chmod +x sample.sh を実行して、実行権限を付けてください。
./ を付け忘れる
カレントディレクトリのファイルを直接実行するときは、通常 ./sample.sh のように ./ を付けます。
実行方法の違いが混ざる
sh sample.sh は sh にファイルを渡して実行する方法です。
./sample.sh はファイル自体を直接実行する方法です。
同じ結果になっても、必要な条件は同じではありません。
よくあるエラー
sh: permission denied: ./sample.sh
実行権限が付いていない可能性があります。
chmod +x sample.shを実行してから、もう一度試してください。
command not found: sample.sh
./ を付けずに実行している可能性があります。
./sample.shのように入力してください。
bad interpreter
1行目の #!/bin/sh が正しく書かれていない可能性があります。
/bin/sh のパスを正確に書いているか確認してください。
練習用コード
次の内容で message.sh を作成して実行してみてください。
#!/bin/sh
echo "Start"
echo "Script is running"
echo "End"まずは sh message.sh で実行し、そのあと chmod +x message.sh を実行してから ./message.sh でも試してください。
この回で理解しておくこと
- シェルスクリプトはテキストファイルとして保存して実行する
#!/bin/shは直接実行時に重要な指定であるchmod +xで実行権限を付けられるsh sample.shはshにファイルを渡して実行する方法である./sample.shはファイル自体を直接実行する方法である- 同じ結果でも実行方法によって前提条件が異なる
まとめ
今回は、スクリプトをファイルとして保存し、sh sample.sh と ./sample.sh の2通りで実行する方法を確認しました。
シェルスクリプトでは、保存、実行権限、シバンの3点を正しく理解しておくことが重要です。
次回は、スクリプトの中で値を保存するために使う変数を学びます。
次回予告
次回は「変数を使って値を保存しよう」です。
name="Taro" のような書き方と、$name で値を取り出す方法を確認します。




