source コマンド
現在のシェル環境でファイルやスクリプトからコマンドを実行します。
概要
source
コマンド(別名 .
でもアクセス可能)は、指定されたファイルからコマンドを読み込み、現在のシェルコンテキストで実行します。スクリプトを直接実行するとサブシェルで実行されるのに対し、source
は現在のシェルでコマンドを実行するため、読み込まれたファイルで定義された変数や関数が現在のセッションで持続します。
オプション
source
コマンドはシェル組み込みコマンドであるため、オプションは最小限です:
-h
ヘルプ情報を表示します(一部のシェルで利用可能)
$ source -h
.: usage: . filename [arguments]
使用例
設定ファイルの読み込み
$ source ~/.bashrc
ドット(.)エイリアスの使用
$ . ~/.bash_profile
引数付きでの読み込み
$ source script.sh arg1 arg2
環境変数の読み込み
$ cat env.sh
export PROJECT_ROOT="/path/to/project"
export API_KEY="abc123"
$ source env.sh
$ echo $PROJECT_ROOT
/path/to/project
ヒント
環境設定には source を使用する
source は、現在のシェルセッションで利用したい環境変数、関数、エイリアスを読み込むのに最適です。
スクリプトのデバッグ
bash では -x
オプションと共に source
を使用することで、実行される各コマンドを表示してスクリプトをデバッグできます:
$ source -x script.sh
ログアウトせずに設定を再読み込み
.bashrc
や .zshrc
などのシェル設定ファイルを変更した場合、source
を使用してターミナルを再起動せずに変更を適用できます。
スクリプトパスの考慮事項
source
を使用する場合、スクリプトパスは呼び出し元スクリプトの場所ではなく、現在のディレクトリからの相対パスになります。
よくある質問
Q1. source
とスクリプトを直接実行することの違いは何ですか?
A. スクリプトを直接実行する場合(例:./script.sh
)、サブシェルで実行されます。そのスクリプトで定義された変数や関数は、スクリプトが終了すると失われます。source
を使用すると、コマンドは現在のシェルで実行されるため、変数や関数はスクリプト完了後も持続します。
Q2. source
はどのような種類のファイルでも使用できますか?
A. 有効なシェルコマンドを含むテキストファイルであれば、どのようなファイルでも読み込むことができます。通常は、シェルスクリプト(.sh
)、設定ファイル、環境設定ファイルで使用されます。
Q3. source
とドット(.
)コマンドに違いはありますか?
A. 機能的な違いはありません。ドット(.
)は POSIX 標準コマンドであり、source
は bash やその他のシェルで利用可能なより読みやすいエイリアスです。どちらも同じことを行います。
Q4. 読み込もうとしたファイルが存在しない場合はどうなりますか?
A. 「No such file or directory」(そのようなファイルやディレクトリはありません)のようなエラーメッセージが表示され、コマンドは非ゼロの終了ステータスを返します。
参考文献
- Bash リファレンスマニュアル: https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html
- POSIX 仕様: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#dot
改訂履歴
- 2025/05/05 初版