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で確認」という流れを覚えておくと、ターミナルを開き直すことなく効率的に設定を適用できるようになります。




コメント