概要
ファイルを新しいシェルで起動せず、現在のシェルへ読み込んで実行します。環境変数や関数定義を現在のシェルへ反映したい時に使います。
基本構文
source ファイル [引数 ...]
. ファイル [引数 ...]詳細解説
sourceは、指定したファイルの内容を現在のシェル環境へ読み込み、その場で実行するBash組み込みコマンドです。新しいプロセスを作るのではなく、現在のシェルで実行するため、変数、関数、カレントディレクトリ、シェルオプションなどの変更がそのまま残ります。
~/.bashrcの再読み込み、関数集の導入、環境設定の反映に便利ですが、読み込むファイルの内容がそのまま現在のシェルへ影響するため、信頼できないファイルをsourceするのは危険です。
移植性の観点では、POSIX shで標準なのはsourceではなくドットコマンド(.)です。
このコマンドを使う場面
~/.bashrcの変更をログインし直さず反映したい時、関数や補助設定を現在のシェルへ取り込みたい時、環境変数を今の端末へ反映したい時に使います。
まず安全に試す方法
1. printf "%sn" "MYVAR=demo" > /tmp/demo.sh
2. source /tmp/demo.sh
3. printf "%sn" "$MYVAR"
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
小さな設定ファイルを作り、sourceで読み込んで値が残ることを確認します。
資格試験との関連
-
共通基礎
範囲: 試験横断の基礎操作根拠: editorialsourceは、シェルの解決順や互換性差分の理解に関わるため、試験と実務の橋渡しとして重要です。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorial試験横断で、sourceはコマンドライン操作、手順読解、トラブルシュートの基礎体力を作る項目です。
実行結果サンプル
-
printf "%sn" "MYVAR=demo" > /tmp/demo.sh source /tmp/demo.sh printf "%sn" "$MYVAR"demo
戻り値コード
- 0 正常に読み込みと実行が完了しました。
- >0 ファイルが見つからない、読み込めない、またはファイル内処理でエラーが起きました。
使用例
source ~/.bashrc. ./env.shsource ./functions.sh
よくあるエラー
-
/bin/shでsourceが使えない 原因: sourceはBash系で一般的な書き方で、POSIX shでは.を使います。対処: 移植性が必要なら. ファイルに書き換えます。
導入・互換性情報
sourceはBashの組み込みです。POSIX shの移植性を考える場合は. ファイルを使います。Dashなどの/bin/shではsourceが使えないことがあります。
- Debian GNU/Linux / 13 / Bash 5.2.37
注意点 / セキュリティリスク
現在のシェルへ直接影響するため、読み込んだファイルがPATH、alias、関数、setオプション、作業ディレクトリを変更すると、その後の端末挙動が変わります。
FAQ
-
Q. sourceとbash ファイルの違いは何ですか。 A. sourceは現在のシェルで実行し、bash ファイルは新しいBashを起動して別プロセスで実行します。
関連用語
参照リンク
- カテゴリー: Shell And Cli
- シェル依存: Bash
- レベル: Basic
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎