1.02.3標準
次の構成でln -s ../shared/app.conf config/current.confを実行する。
configとsharedは同じ親ディレクトリ直下にある。
./config/
./shared/app.confconfig/current.confが参照する対象はどれか。
× 不正解
シンボリックリンクに格納された相対パスは、リンクが置かれたディレクトリを基準に解決される。
詳細解説
誤りコマンド実行時のカレントディレクトリにあるshared/app.conf
相対参照先は利用時にリンク自身の親ディレクトリを基準として解決される。
誤り。作成時にtarget文字列はそのまま格納され、利用時の解決基準はコマンド実行時のカレントではない。
誤りconfig/shared/app.conf
configから../で1階層上へ移るため、configの内部には向かわない。
誤り。../はconfigの親へ戻るため、configの子sharedを指すパスにはならない。
正しいconfigの親にあるshared/app.conf
リンクの親configから../shared/app.confを解決した位置である。
正しい。current.confの親configを基準に../shared/app.confを正規化すると、同じ親のshared/app.confになる。
誤り絶対パス/shared/app.conf
先頭/のない参照先は絶対パスではなく相対パスである。
誤り。格納文字列は../から始まり、ルート/から始まる絶対パスではない。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp -d); mkdir "$tmp/config" "$tmp/shared"; printf ok >"$tmp/shared/app.conf"; (cd "$tmp" && ln -s ../shared/app.conf config/current.conf); cat "$tmp/config/current.conf"; rm -rf "$tmp"期待される結果
ok理解のポイント
- relative target
- 基準はリンクの親
- リンクの移動で解決先が変わり得る
確認時の注意
- 確認環境: Linux / POSIX path resolution / 一時ディレクトリ
基礎のおさらい
移動可能性
相対リンクはリンクと対象の相対配置を保って一緒に移動すると有効なままにしやすい。
格納文字列
シンボリックリンクは作成時にtargetの実在性や正規化済み絶対位置を必ず保存するわけではない。
問題IDKL-101-416
確認環境Linux / POSIX path resolution / 一時ディレクトリ
最終技術確認2026-08-13
誤り・権利侵害を報告