はじめに
未経験スタートの見習いエンジニアが、アウトプット、備忘録としてまとめたものです。
不適切な発言、不確かな情報は発信しないつもりですが、足りない点ありましたら、遠慮なくコメントの方から教えて頂けると嬉しく思います。
という事で、シンボリックリンクについて書いて行きたいと思います。
シンボリックリンクってなんだろう
シンボリックリンクとは
ファイルに別名を設定し,その別名で基のファイルにアクセスできるようにする「リンク」機能の1つです。
別名を設定したファイルを、「シンボリックリンクファイル」と言います。
このシンボリックリンクファイルは、元となるファイルのパスを持っている為、シンボリックリンクファイルにアクセスすると、元となるファイルが表示されます。
元なるファイルと、シンボリックリンクファイルは、別物なので、例えば、シンボリックリンクファイルを削除しても、元のファイルに影響はありません。
もし逆の事、元のファイルを削除した場合は、シンボリックリンクファイルにアクセスしても開く事はできません。
ln -s ファイルのパス リンクのパス
## なぜシンボリックリンクを貼るんだろう
例えば、開発の環境構築をする際に、仮想環境を用いて環境構築を行ったとします。
仮想環境とホスト環境は別物なので、基本的に、仮想環境下にあるディレクトリや、ファイルには、ホスト側からアクセスする事ができません。
アクセスできないという事は、開発する際に使用するエディタを自由に選択する事ができないですし、仮想環境下で作業をした事が無い方にとっては、不便を感じる点が数多くあるかもしれません。
この問題を解決するのが、シンボリックリンクであり、シンボリックリンクを貼る理由です。
ホスト側からアクセスできるようにする為、仮想環境下にあるファイルやディレクトリに、シンボリックリンクを貼り、ホスト側に、その別名を付けたシンボリックリンクファイルを置く事で、ホスト側からでもアクセスする事ができます。
##追記
なぜシンボリックリンクを貼るんだろう
で述べましたが、
仮想環境とホスト環境は別物なので、基本的に、仮想環境下にあるディレクトリや、ファイルには、ホスト側からアクセス>する事ができません。
こちらのコメントを頂きました。
このような状況は2通り考えられるかと思いますが、どちらの状況でもシンボリックリンクを作成することでは解決しない>気がします。
- 仮想環境のファイルシステムがホスト側にはマウントされておらず、アクセスしようにもパスが無い:
→ シンボリックリンクを作成するにはターゲットのファイルのパスが必要です。つまりパスが無いならば、そもそもシンボリックリンクが作成できません- 何らかの方法で仮想環境のファイルシステムをホスト側にマウントしてあるが、権限の問題でアクセスできない:
→ シンボリックリンクのアクセス権を変更しても、ターゲットのファイルの権限に変わりはないため、やはりアクセスできません
1,2共に仰る通りで、まずシンボリックリンクを作成するには、ターゲット
つまり元となるファイルのパスが必要になります。もしそのターゲット
が存在しない状況で、シンボリックリンクを貼る事自体出来ませんし、私の記述した問題を満たす事はありません。
また、権限に関しても、シンボリックリンクはあくまで、元となるターゲット
にアクセスできる為のファイルになります。ですので、例えシンボリックリンクの権限を変更したとしても、ターゲット
の権限を変更しない限り、私の記述した問題を満たす事はありません。
以上の二つを前提として記載させて頂きましたが、貴重なご意見を頂きましたので、追記という形で記載させて頂きました。
コメントを頂きました@8x9さんありがとうございます。
まとめ
シンボリックリンクは、機能の一つで、その機能によって生成するファイル(シンボリックリンクファイル)は、元のファイルにアクセスできるんだよーという事です。
Windowsだと、「ショートカット」と解釈してもいいかもしれませんね。