
新Linux入門|bash・source・実行権限によるスクリプト実行の違い
Linuxでシェルスクリプトを実行する方法はいくつかありますが、
「bash」「source」「実行権限を付けて直接実行」では、動作の仕組みがまったく異なります。
同じスクリプトでも、実行方法によって「どのシェルで実行されるか」「環境変数が引き継がれるか」「実行権限が必要か」が変わります。
ここでは、これら3つの実行方法の違いをわかりやすく紹介します。

⚙️ 1. bashコマンドで実行する方法
シェルスクリプトは bash コマンド を使って実行できます。
📘 書式
[suzuki@AlmaLinux ~]$ bash myscript.sh💬 この方法では、myscript.sh に実行権限がなくても実行可能です。
なぜなら、bash コマンド自体に実行権限があり、スクリプトファイルをbashが読み取って実行するからです。
📗 ポイントまとめ
| 項目 | 内容 |
|---|---|
| 実行権限 | 不要(bashコマンドが実行するため) |
| 実行場所 | 新しいサブシェル |
| 変数の影響範囲 | 呼び出し元に影響しない |
| 使いどころ | スクリプトをテスト・デバッグするときに便利 |
📘 例
[suzuki@AlmaLinux ~]$ bash /home/suzuki/test.sh💬 このとき、bashが新しいシェルを起動し、test.sh の内容を順番に実行します。
🧠 2. sourceコマンド(または . コマンド)で実行する方法
source コマンド(または .)は、スクリプトを現在のシェルセッション内で実行します。
📘 書式
[suzuki@AlmaLinux ~]$ source myscript.shまたは、
[suzuki@AlmaLinux ~]$ . myscript.sh💬 この方法では 新しいサブシェルは作られません。
スクリプトの中で設定した変数や環境の変更が、呼び出し元のシェルにも反映されます。
📗 ポイントまとめ
| 項目 | 内容 |
|---|---|
| 実行権限 | 不要(現在のシェルで読み込むだけ) |
| 実行場所 | 現在のシェルセッション内 |
| 変数の影響範囲 | 呼び出し元にも反映される |
| 使いどころ | 環境変数・エイリアス設定・関数定義などに最適 |
📘 例
[suzuki@AlmaLinux ~]$ source ~/.bashrc💬 .bashrc の変更内容を反映するときに使う、まさにおなじみのコマンドですね。
🧩 3. 実行権限を付けて直接実行する方法
スクリプトに 実行権限( x ) を付けると、コマンドのように直接実行できるようになります。
📘 手順
[suzuki@AlmaLinux ~]$ chmod +x myscript.sh
[suzuki@AlmaLinux ~]$ ./myscript.sh💬 この方法では、スクリプトファイルの先頭にある「シバン(shebang)」が重要です。
例えば、スクリプトの最初が以下のようになっている場合
#!/bin/bashこの場合、実際の実行は「bash /path/to/myscript.sh」と同等です。
📗 ポイントまとめ
| 項目 | 内容 |
|---|---|
| 実行権限 | 必要(chmodで+xを付与) |
| 実行場所 | 新しいサブシェル |
| 変数の影響範囲 | 呼び出し元に影響しない。 |
| 使いどころ | スクリプトを独立したプログラムとして利用する場合 |
🚫 「myscript.sh: コマンドが見つかりません」エラーの理由
スクリプトをカレントディレクトリで実行するとき、次のようなエラーが出ることがあります。
📘 失敗例
[suzuki@AlmaLinux ~]$ myscript.sh
bash: myscript.sh: コマンドが見つかりません...💬 これは、現在のディレクトリ (.) が PATH 環境変数に含まれていない ためです。
Linuxでは、セキュリティのためにカレントディレクトリは自動探索されません。
📘 成功例
[suzuki@AlmaLinux ~]$ ./myscript.sh💬 ./ を付けることで、「現在のディレクトリ内のmyscript.sh」を明示的に実行できます。
🧱 bash・source・実行権限の比較まとめ
| 実行方法 | 実行権限の必要性 | 実行される場所 | 環境変数の反映 | 主な用途 |
|---|---|---|---|---|
| bash myscript.sh | 不要 | サブシェル | 反映されない | テスト・デバッグ向き |
| source myscript.sh | 不要 | 現在のシェル | 反映される | 設定の読み込み |
| ./myscript.sh | 必要 | サブシェル | 反映されない | 実行ファイル化 |
💬 スクリプトを「環境設定用」に使うなら source、
「独立したプログラム」として動かしたいなら chmod +x で直接実行、
「動作を確認したいだけ」なら bash が便利です。
✅ まとめ
- bash は新しいシェルを起動して実行(実行権限不要)
- source は現在のシェル内で実行(変数や設定を引き継ぐ)
- ./myscript.sh は実行権限が必要(独立したプログラムとして実行)
- カレントディレクトリのスクリプトを実行する際は
./を付ける。
💬 これらの違いを理解しておくことで、スクリプトのテスト・設定反映・自動化を自在に使い分けることができます。
