このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】シェルスクリプトの実行方法

シェルスクリプトの実行方法

 シェルスクリプトは、シェルコマンドを記述したテキストファイルであり、複数のコマンドを一度に実行するためのスクリプトです。主にシステム管理やタスクの自動化に使用されます。シェルスクリプトの実行方法にはいくつかの方法があり、目的や環境に応じて適切な方法を選択することが重要です。ここでは、シェルスクリプトを実行するための基本的な方法について詳しく解説します。

シェルスクリプトの実行方法には以下の方法があります。

  1. bash コマンドでの実行
  2. source コマンドでの実行
  3. ファイルパスを指定して実行
  4. スクリプトファイル名のみで実行

それぞれの方法について、具体的な使用例と解説を交えて解説していきます。

シェルスクリプトの実行方法

方法説明使用例
bash コマンドでの実行bash コマンドを使用してスクリプトを実行します。bash script.sh
source コマンドでの実行source コマンドを使用してスクリプトを実行します。スクリプト内の変数が現在のシェルに影響を与えます。source script.sh
ファイルパスを指定して実行スクリプトファイルのパスを直接指定して実行します。スクリプトに実行権限が必要です。./script.sh
スクリプトファイル名のみで実行スクリプトファイルが 環境変数PATH に含まれるディレクトリにある場合、ファイル名だけで実行できます。スクリプトには実行権限が必要です。script.sh
シェルスクリプトの実行方法

シンプルなシェルスクリプトの例

シンプルなシェルスクリプトを作成します。

テキストエディタ(nanoエディタ)などで「hello.sh」を作成します。

・「nano hellow.sh 」コマンドを実行します。

user01@ubuntu-vm:~$ nano hello.sh

Ctrl + S」 を押して、内容を保存して「Ctrl + X」 を押して nano を終了します。

シェルスクリプトの例:hello.sh

#!/bin/bash
# "Hello, World!" を表示
echo "Hello, World!"

➊bashコマンドでの実行

 bash コマンドを使ってシェルスクリプトを実行する方法です。スクリプトに実行権限がなくても実行できます。ログインシェルに設定されているシェル変数を参照しないでシェルスクリプトが実行されます。

【構文】
bash スクリプト名.sh

・「bash hello.sh」コマンドを実行します。

user01@ubuntu-vm:~$ bash hello.sh
Hello, World!

bashコマンドの主なオプション

オプション説明
-x変数の展開や制御文を表示します。
-vスクリプトの内容をそのまま表示します。
bashコマンドの主なオプション

➋sourceコマンドでの実行

 source コマンドを使ってシェルスクリプトを実行すると、スクリプト内の変数や関数が現在のシェル環境に影響を与えます。

【構文】
souce スクリプト名.sh
 または
. スクリプト名.sh

以下のコマンドを実行します。

  • source hello.sh」コマンド
  • . hello.sh」コマンド

 このコマンドは hello.sh スクリプトを現在のシェルで実行します。スクリプト内で設定された変数や関数は、実行後も現在のシェル環境で利用可能です。

user01@ubuntu-vm:~$ source hello.sh
Hello, World!

# または

user01@ubuntu-vm:~$ . hello.sh
Hello, World!

sourceコマンドでシェルスクリプトを実行した場合、特殊な変数 $$ を使ってPIDを確認できます。

・「echo $$」コマンドを実行します。

# 現在のシェルのPIDを表示します
user01@ubuntu-vm:~$ echo $$
3998

❸ファイルパスを指定して実行

 スクリプトファイルのパスを直接指定して実行する方法です。スクリプトに実行権限が必要です。スクリプトを実行する前に「chmod」コマンドで実行権限を与えておく必要があります。

【構文】
$ ./スクリプト名.sh
 または
$ ファイルパス/スクリプト名.sh

・「chmod a+x hello.sh」コマンドでシェルスクリプトに実行権を与え、「ls -l hello.sh」コマンドでパーミッションを確認します。

user01@ubuntu-vm:~$ chmod a+x hello.sh
user01@ubuntu-vm:~$ ls -l hello.sh 
-rwxrwxr-x 1 user01 user01 61  6月 24 00:36 hello.sh

以下のコマンドを実行します。

  • ./hello.sh」コマンド
  • /home/user01/hello.sh」コマンド

 「./hello.sh」コマンドは、カレントディレクトリにある hello.sh スクリプトを実行します。また、「/home/user01/hello.sh」コマンドは、ファイルパスを指定して、 hello.sh スクリプトを実行します。

user01@ubuntu-vm:~$ ./hello.sh
Hello, World!

# または

user01@ubuntu-vm:~$ /home/user01/hello.sh
Hello, World!

➍スクリプトファイル名のみで実行

 スクリプトファイルが 環境変数PATH に含まれるディレクトリにある場合、ファイル名だけで実行できます。これにより、簡単にスクリプトを実行できます。

【構文】
$ スクリプト名.sh

 スクリプトの実行するには、スクリプトに実行権限があり、環境変数PATH にディレクトリが含まれている必要があります。スクリプト「hello.sh」には既に実行権限を与えているため、環境変数PATH に新しいパスを追加するだけです。

/home/user01 ディレクトリにスクリプトを作成したため、以下のコマンドで 環境変数PATH を設定します。(※追加するディレクトリはスクリプトを作成したディレクトリ)

・「export PATH=$PATH:/home/user01」コマンドを実行します。

user01@ubuntu-vm:~$ export PATH=$PATH:/home/user01

これで、スクリプトを実行する準備が整いました。

・「hello.sh」コマンドを実行します。

 このコマンドは 環境変数PATH に含まれるディレクトリにある hello.sh スクリプトを実行します。

user01@ubuntu-vm:~$ hello.sh
Hello, World!

シェルスクリプトの削除

この演習で作成したシェルスクリプトを削除します。

・「rm hello.sh」コマンドを実行し、「ls」コマンドで削除されたことを確認します。

user01@ubuntu-vm:~$ rm hello.sh
user01@ubuntu-vm:~$ ls
snap          テンプレート  ドキュメント  ピクチャ      公開
ダウンロード  デスクトップ  ビデオ        ミュージック

まとめ

 シェルスクリプトの実行方法には様々な方法があります。以下の表でまとめたように、目的や環境に応じて適切な方法を選択することが重要です。

方法説明使用例
bash コマンドでの実行bash コマンドを使用してスクリプトを実行します。bash script.sh
source コマンドでの実行source コマンドを使用してスクリプトを実行します。スクリプト内の変数が現在のシェルに影響を与えます。source script.sh
ファイルパスを指定して実行スクリプトファイルのパスを直接指定して実行します。スクリプトに実行権限が必要です。./script.sh
スクリプトファイル名のみで実行スクリプトファイルが 環境変数PATH に含まれるディレクトリにある場合、ファイル名だけで実行できます。スクリプトには実行権限が必要です。script.sh

bashコマンドでの実行とsourceコマンドでの実行の違い

項目bashコマンドでの実行sourceコマンドでの実行
実行方法bash script.shsource script.sh または . script.sh
実行環境新しいサブシェルで実行現在のシェル環境で実行
環境変数の影響スクリプト内で設定された変数はサブシェルに限定スクリプト内で設定された変数は現在のシェル環境に反映
スクリプトの終了後の影響スクリプト内で設定された変数や変更は元のシェルに影響しないスクリプト内で設定された変数や変更は元のシェルに影響する
実行権限スクリプトに実行権限が不要スクリプトに実行権限が不要
スクリプトの終了方法サブシェルの終了でスクリプトが終了現在のシェルの終了でスクリプトが終了
主な用途独立した環境でスクリプトを実行したい場合に使用環境変数や関数を現在のシェルに影響させたい場合に使用
bashコマンドでの実行とsourceコマンドでの実行の違い