シンボリックリンクとは

しんぼりっくりんく

ほかのファイルやディレクトリのパスを中身として持つ特別なファイルで、開くとそのパスをたどった先が使われる。ln -s 元のパス リンク名 で作り、ls -l では先頭が l で「リンク名 -> 元のパス」と表示される。別のファイルシステムやディレクトリも指せるが、元を消したり移したりすると、たどる先のないリンク切れになる。同じ inode を指す別名であるハードリンクとは区別される。

「シンボリックリンク」は、1分野の1問の練習問題に出てきます(Linuxとコマンドラインの基礎など)。

この用語の分野: Linuxとコマンドラインの基礎

作り方と見え方

ln -s /opt/tools/sim-2.3 /opt/tools/sim のように作ると、/opt/tools/sim を開いたり cd したりしたときに、実際には /opt/tools/sim-2.3 が使われます。ls -l では「sim -> /opt/tools/sim-2.3」と表示され、readlink や realpath でたどった先を確かめられます。リンク自体のパーミッションは使われず、たどった先のファイルの権限で判断されます。

相対パスと絶対パス

リンクの中身に相対パスを書くと、リンクが置かれたディレクトリを起点にたどられます。ディレクトリごと別の場所に移しても関係が保たれる利点がありますが、リンクだけを移すと切れてしまいます。絶対パスで書くと、リンクをどこに移しても同じ場所を指しますが、指す先のディレクトリの構成を変えると切れます。

ハードリンクとの違い

ハードリンクは、同じ inode を指す名前をもう1つ増やすもので、元の名前を消しても中身は残ります。ただし、同じファイルシステムの中でしか作れず、ふつうはディレクトリに対しては作れません。シンボリックリンクはパスを記録しているだけなので、ファイルシステムをまたいでも、ディレクトリに対しても作れますが、元が消えるとリンク切れになります。

よくある質問

シンボリックリンクはどんな場面で使われますか?

ツールの版を切り替える場面がよく知られています。/opt/tools/sim を最新の版のディレクトリに向けておけば、利用者のスクリプトは同じパスのまま、リンクを張り替えるだけで版を変えられます。共有ライブラリの libfoo.so から libfoo.so.1.2 への名前づけや、大きなデータを別のディスクに置いてプロジェクトの中から参照する場合にも使われます。

リンク切れはどうやって見つけますか?

ls -l で表示される指す先が存在しなければ、多くの環境で色や表示で区別されます。GNU の find では find . -xtype l のようにすると、たどる先のないシンボリックリンクを一覧できます。リンク切れのファイルを開こうとすると、「No such file or directory」のエラーになります。

解説の中の「シンボリックリンク」

「シンボリックリンク」が出てくる問題(1問)

  1. 上のコマンドを順に実行したとき、最後の2つの cat の結果として、正しいものはどれか。

Linuxとコマンドラインの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

ハードリンク inode SSH 環境変数 Git grep cron シェル シグナル(Unix) スーパーユーザ

用語集の一覧へ