sourceコマンドとは?Linuxでシェルスクリプトを現在のシェルで実行する方法

Linux

Linuxで設定ファイルを編集したあと、「ターミナルを開き直さずに設定を反映したい」と思ったことはありませんか?

そんなときによく利用されるのがsourceコマンドです。

sourceコマンドを使うと、新しいシェルを起動せず、現在のシェル環境のままシェルスクリプトを実行できます。

環境変数の反映や~/.bashrcの読み込みなど、Linuxでは非常によく利用される基本コマンドの一つです。

この記事では、sourceコマンドの基本的な使い方から、`.`(ドット)コマンドとの違い、execとの違い、環境変数の反映方法まで初心者向けに分かりやすく解説します。

sourceコマンドとは

sourceは、指定したシェルスクリプトを現在のシェル環境で実行するためのシェル組み込みコマンドです。

通常のシェルスクリプト実行では新しいシェル(サブシェル)が作成されますが、sourceでは現在のシェルがそのまま利用されるため、環境変数やカレントシェルの設定変更が実行後も反映されます。

sourceコマンドの基本構文

source ファイル名

例えば、.bashrcを再読み込みする場合は次のように実行します。

source ~/.bashrc

設定内容が現在のシェルへ即座に反映されます。

通常実行との違い

実行方法 動作
./sample.sh 新しいシェルで実行する
source sample.sh 現在のシェルで実行する

環境変数やエイリアスを変更するスクリプトでは、この違いが非常に重要です。

.(ドット)コマンドとの違い

Bashでは、source.(ドット)はほぼ同じ意味で利用できます。

source ~/.bashrc

次の書き方も同じ動作です。

. ~/.bashrc

POSIX互換シェルでは.が広く利用されます。

環境変数を反映する

例えば、環境変数を追加したあとにsourceを実行すると、シェルを開き直さずに反映できます。

export APP_ENV=production
source ~/.bashrc

その後は、新しい設定を現在のシェルで利用できます。

.bashrcを再読み込みする

エイリアスやPATHを変更したあとによく利用する例です。

source ~/.bashrc

ターミナルを再起動する手間が省けます。

PATHを更新する例

export PATH="$HOME/bin:$PATH"

source ~/.bashrc

PATHの変更を現在のシェルへ反映できます。

シェルスクリプトで利用する例

共通設定を読み込む場合にも利用されます。

#!/bin/bash

source config.sh

echo "$APP_NAME"

config.shで設定した変数を、そのまま利用できます。

sourceとexecの違い

コマンド 役割
source 現在のシェルでスクリプトを実行する
exec 現在のプロセスを別プログラムへ置き換える

sourceは現在のシェル環境を維持したまま動作しますが、execは現在のプロセス自体を置き換える点が大きく異なります。

sourceで読み込んだ変数を利用する

sourceで読み込んだスクリプト内の変数は、現在のシェルからそのまま利用できます。

例えば、設定ファイルを読み込む例を見てみましょう。

config.sh

APP_NAME="HayanaLab"
APP_PORT=8080

これをsourceで読み込みます。

source config.sh

echo "$APP_NAME"
echo "$APP_PORT"

現在のシェルへ設定が読み込まれるため、そのまま変数を利用できます。

sourceとbashの違い

コマンド 動作
bash sample.sh 新しいシェルで実行する
source sample.sh 現在のシェルで実行する

bashで実行した場合、スクリプト内で変更した環境変数やカレントディレクトリなどは、元のシェルへ反映されません。

一方、sourceでは現在のシェル環境を書き換えるため、実行後も変更内容が残ります。

sourceとexportの関係

sourceとexportは一緒に利用されることが多くあります。

export APP_ENV=production

source ~/.bashrc

環境変数を設定したあとにsourceで設定ファイルを読み込むことで、新しいシェルを起動せずに変更を反映できます。

sourceを使う代表的な場面

sourceコマンドは、次のような場面でよく利用されます。

  • .bashrcを再読み込みする
  • .bash_profileを反映する
  • PATHを更新する
  • 環境変数を読み込む
  • 共通設定ファイルをシェルスクリプトへ読み込む
  • エイリアスを反映する

Linuxサーバーの運用でも頻繁に利用される基本操作です。

sourceはビルトインコマンド

sourceはBashなどに組み込まれているシェル組み込みコマンド(ビルトインコマンド)です。

外部プログラムではないため、新しいプロセスを起動せずに現在のシェル環境を操作できます。

よくあるエラー・注意点

source: No such file or directory

指定したファイルが存在しない可能性があります。

パスを確認しましょう。

ls -l ~/.bashrc

Permission deniedが表示される

読み込み対象のファイルへ適切なアクセス権限が付与されていない可能性があります。

権限を確認してください。

ls -l config.sh

なお、sourceで読み込む場合は通常、実行権限(x)は不要で、読み取り権限(r)があれば利用できます。

変更が反映されない

誤ったファイルを読み込んでいる可能性があります。

例えば、Bashでは通常~/.bashrcを更新しますが、環境によっては~/.profile~/.bash_profileが利用される場合もあります。

現在使用しているシェルや設定ファイルを確認しましょう。

sourceが使えない

sourceはBashなどで利用できますが、POSIX準拠シェルではサポートされない場合があります。

その場合は、互換性の高いドットコマンド(.)を利用してください。

. ./config.sh

よくある質問

sourceコマンドは何をするコマンドですか?

現在のシェル環境でシェルスクリプトを実行し、環境変数や設定変更をそのまま反映するコマンドです。

sourceと「.(ドット)」は同じですか?

はい。

Bashではほぼ同じ動作をします。

sourceとbashの違いは何ですか?

bashは新しいシェルでスクリプトを実行します。

sourceは現在のシェルで実行するため、設定変更がそのまま残ります。

sourceを実行すると新しいプロセスは作成されますか?

いいえ。

現在のシェルで実行されるため、新しいプロセスは作成されません。

sourceはどんな場面で使いますか?

.bashrcの再読み込み、環境変数の反映、PATHの更新、共通設定ファイルの読み込みなどで頻繁に利用されます。

まとめ

sourceコマンドは、Linuxで現在のシェル環境のままシェルスクリプトを実行し、設定変更を即座に反映するための重要なシェル組み込みコマンドです。

特に次のコマンドは覚えておくと便利です。

コマンド 用途
source ~/.bashrc .bashrcを再読み込みする
. ~/.bashrc ドットコマンドで再読み込みする
source config.sh 設定ファイルを現在のシェルへ読み込む
source ~/.profile ログインシェル用設定を再読み込みする
echo $PATH PATHの反映を確認する

Linuxでシェル操作を行う際は、「設定ファイルを編集 → sourceで反映 → echoやenvで確認」という流れを覚えておくと、ターミナルを開き直すことなく効率的に設定を適用できるようになります。

コメント

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