No.009シェル

source

ソース・スクリプト読み込み

知識レベル 基礎注意一般ユーザーで使えるシェルに組み込み別名 .

ファイルを新しいシェルで起動せず、現在のシェルへ読み込んで実行します。環境変数や関数定義を現在のシェルへ反映したい時に使います。

答えよく使う形

  1. 現在のシェルへ変数が反映されます

注意現在のシェルへ直接影響するため、読み込んだファイルがPATH、alias、関数、setオプション、作業ディレクトリを変更すると、その後の端末挙動が変わります。

visitor@goodly: ~

$ printf "%sn" "MYVAR=demo" > /tmp/demo.sh source /tmp/demo.sh printf "%sn" "$MYVAR"

demo

$ source ~/.bashrc

$ . ./env.sh

どんなコマンド?

こんなときに

~/.bashrcの変更をログインし直さず反映したい時、関数や補助設定を現在のシェルへ取り込みたい時、環境変数を今の端末へ反映したい時に使います。

sourceは、指定したファイルの内容を現在のシェル環境へ読み込み、その場で実行するBash組み込みコマンドです。新しいプロセスを作るのではなく、現在のシェルで実行するため、変数、関数、カレントディレクトリ、シェルオプションなどの変更がそのまま残ります。

~/.bashrcの再読み込み、関数集の導入、環境設定の反映に便利ですが、読み込むファイルの内容がそのまま現在のシェルへ影響するため、信頼できないファイルをsourceするのは危険です。

移植性の観点では、POSIX shで標準なのはsourceではなくドットコマンド(.)です。

書き方とオプション

主な書式
1. source ファイル
2. source ファイル 引数...
3. . ファイル

使用例と実行結果

行を押すとコピーできます。

demo
現在のシェルへ変数が反映されます。

まず安全に試す

3分ミッション

手を動かすと覚えやすくなります。できたものに印を付けてください(この端末に残ります)。

0 / 1

つまずいたとき

/bin/shでsourceが使えない

原因sourceはBash系で一般的な書き方で、POSIX shでは.を使います。

こうする移植性が必要なら. ファイルに書き換えます。

終わったときの数(戻り値)

$ echo $?

  • 0正常に読み込みと実行が完了しました。
  • >0ファイルが見つからない、読み込めない、またはファイル内処理でエラーが起きました。

気をつけることと入れ方

気をつけること

現在のシェルへ直接影響するため、読み込んだファイルがPATH、alias、関数、setオプション、作業ディレクトリを変更すると、その後の端末挙動が変わります。

シェル(bash など)に組み込まれたコマンドです。入れるものはありません。

環境による違い

sourceはBashの組み込みです。POSIX shの移植性を考える場合は. ファイルを使います。Dashなどの/bin/shではsourceが使えないことがあります。

確かめた環境Debian GNU/Linux / 13 / Bash 5.2.372026-04-09 に確認

よくある質問

sourceとbash ファイルの違いは何ですか。

sourceは現在のシェルで実行し、bash ファイルは新しいBashを起動して別プロセスで実行します。

資格試験では

  • 共通基礎大事試験横断の基礎操作sourceは、シェルの解決順や互換性差分の理解に関わるため、試験と実務の橋渡しとして重要です。
  • 共通基礎大事Linuxコマンド基礎

source を最後まで読みました。

Linux コマンド辞典に戻る106 / 144

Goodly のメニュー