解説
シンボリックリンクの相対パスはどこ基準?リンク先と入口を分けて確かめよう
同じファイルを別の場所から開くために、シンボリックリンクを作ることがある。相対パスで指定したリンク先は、今いるターミナルの場所ではなく、リンクが置かれた場所を基準に解釈されるよ。

同じファイルを別の場所から開くために、シンボリックリンクを作ることがある。相対パスで指定したリンク先は、今いるターミナルの場所ではなく、リンクが置かれた場所を基準に解釈されるよ。
この記事はGNU/Linuxの一時フォルダーでの練習。既存の公開ディレクトリや設定ファイルへリンクを作らず、自分の練習用のファイルだけで確かめよう。
コピーではなく、別の名前への参照
シンボリックリンクは、リンク先のパスを保持する入口。元の内容を複製するコピーとは違う。元ファイルの内容が変われば、その入口からも変わった内容が読める。
元の名前がなくなると、リンクだけ残っていても開けなくなる場合がある。入口が存在することと、内容まで読めることを分けて確認しよう。
小さなフォルダーで作る
空の場所へ移動し、次を実行する。すでにsymlink-practiceがある場合は、別の空の作業場所で試してね。
mkdir symlink-practice
cd symlink-practice
printf 'practice\n' > original.txt
mkdir links
ln -s ../original.txt links/note.txt
readlink links/note.txt
cat links/note.txt
readlinkは保持しているパスを表示し、この例では../original.txtとなる。catではpracticeと読める。リンクのあるlinksから一つ上へ進むので、original.txtへ到達するんだ。
作業場所を変えても読む先は同じ
続けて cd links、cat note.txt としても同じ内容になる。相対リンクは、コマンドを打ったときの作業場所をそのまま保存する仕組みではないよ。
リンクを置く場所へ合わせて、対象へのパスを決める。別のフォルダーへリンクだけを移すと、同じ文字列のパスでも違う場所を指す可能性がある。
リンク切れを練習するなら
練習フォルダーで元の名前を変更すると、入口が開けなくなることを確かめられる。実際のデータでは試さず、元の名前へ戻す手順を先に用意しよう。
編集部では、この一時フォルダーでリンク先の表示、作業場所を変えた読み取り、元の名前の変更によるリンク切れと復元を確認した。
既存の名前を上書きしない
練習でlnの強制上書きオプションは使わない。すでに同名のファイルがあれば止まり、何があるかを確認する方が安全だよ。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。