第3回 はじめてのシェルスクリプト実行:chmodとシバン(#!)を理解する

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析には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 script

3. 実行権限を付ける

次に、ファイルを直接実行できるようにします。

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

この方法は、shsample.sh を読み込ませて実行します。

この場合は sh を明示しているため、通常は実行権限がなくても実行できます。

./sample.sh

./sample.sh

この方法は、sample.sh というファイル自体を直接実行します。

そのため、次の2つが必要です。

  • 実行権限が付いていること
  • 先頭に #!/bin/sh が書かれていること

初学者がつまずきやすい点

保存しただけでは直接実行できない

ファイルを保存しただけでは、./sample.sh で実行できないことがあります。

まず chmod +x sample.sh を実行して、実行権限を付けてください。

./ を付け忘れる

カレントディレクトリのファイルを直接実行するときは、通常 ./sample.sh のように ./ を付けます。

実行方法の違いが混ざる

sh sample.shsh にファイルを渡して実行する方法です。

./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.shsh にファイルを渡して実行する方法である
  • ./sample.sh はファイル自体を直接実行する方法である
  • 同じ結果でも実行方法によって前提条件が異なる

まとめ

今回は、スクリプトをファイルとして保存し、sh sample.sh./sample.sh の2通りで実行する方法を確認しました。

シェルスクリプトでは、保存、実行権限、シバンの3点を正しく理解しておくことが重要です。

次回は、スクリプトの中で値を保存するために使う変数を学びます。

次回予告

次回は「変数を使って値を保存しよう」です。

name="Taro" のような書き方と、$name で値を取り出す方法を確認します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

Created by UNIX Cafe

目次