1.06.1基礎
現在のシェルで./env.confを読み込み、ファイル内の変数定義を保持する。
sourceの代わりにPOSIXで定義された組込みを使う。
適切なコマンドはどれか。
× 不正解
. FILEはPOSIXで定義された現在シェルへの読込構文で、Bashのsourceと同じ目的に使える。
詳細解説
誤り
sh ./env.conf別プロセスのshで実行し、親の現在シェルへ変数を残さない。
sh ./env.confは子のshで内容を実行する。子で作られたDEMO_DOTは親の現在シェルへ残らない。
誤り
./env.conf実行ファイルとして起動し、現在シェルで読み込む操作ではない。
./env.confはファイルを独立したコマンドとして起動する指定である。実行権やshebangが必要で、現在環境への読込ではない。
正しい
. ./env.confドット組込みが現在のシェルでファイルを読み込み実行する。
. ./env.confはドット組込みで、現在のシェルがファイルを実行する。ファイル内の変数定義を後続処理で利用できる。
誤り
cat ./env.conf内容を表示するだけで、記述された代入を実行しない。
catは文字列として内容を表示するだけである。代入文をシェル構文として評価しないため、変数は定義されない。
実際に確かめる
一時的な検証環境で実行できる例です。
sh -c 'f=$(mktemp); printf "DEMO_DOT=loaded\n" >"$f"; . "$f"; printf "%s\n" "$DEMO_DOT"; rm -f "$f"'期待される結果
loaded理解のポイント
- ドットは組込み
- 現在シェルで実行
- sourceより移植性が高い
確認時の注意
- 確認環境: POSIX sh / 一時ファイル
- 読込対象はシェルコードとして実行されるため、内容と所有者を確認する。
基礎のおさらい
ドット組込み
. FILEはPOSIXシェルで利用でき、Bashではsource FILEも同じ目的に使える。
パス指定
FILEにスラッシュがない場合の検索規則があるため、現在ディレクトリのファイルは. ./fileのように明示すると分かりやすい。
問題IDKL-102-901
確認環境POSIX sh / 一時ファイル
最終技術確認2026-08-13
誤り・権利侵害を報告