先日、環境構築で「シンボリックリンクを作成する」みたいな項目があり、
気になって調べたもののいまいちよくわからず。。
たまたまドットインストールで
UNIXコマンドについて勉強していたところ、
シンボリックリンクが登場したのでまとめてみた。
シンボリックリンクとは
ファイルやフォルダの成りすましファイル
本物に中継するのが役目だから、それ自体に中身は無い
Windowsにおける「ショートカット」みたいなもの
参考:https://wa3.i-3-i.info/word1151.html
このサイト、とても分かりやすくて普段よく使うんだけど
シンボリックリンクについてはいまいちピンとこなかった・・・。
後から整理できたが、要は
- LINUXコマンドを扱う上で便利
- 目的のファイルに辿り着くまでの一連のパスに、もっと短い別名をつけることができる
みたいな感じかなぁ。
例えば、今Practiceディレクトリにいるとして
config/production/databaseというディレクトリ構成になっていたとする。
今の状態
Practice/config/production/database
で、databaseディレクトリの中に新しくcommend.sqlを作って
そこに今いるPracticeディレクトリから、結構な頻度でアクセスしなきゃいけないとする
今の状態
Practice/config/production/database/command.sql
普通なら今いるPracticeからcommand.sqlに行くためには
cd config/production/database/
っていう長ったらしいコマンドを打たなきゃいけないけど、
頻繁に使うならもっと短い記述で実現できるようにしたい。
そんな時に使えるのがシンボリックリンク
config/production/database/に対して、まるごと
例えばdbconfigみたいな自分の好きな別名をつけることができる。
そうすると、以下の二つは同じ意味になる
$ cd config/production/database/
$ cd dbconfig
$ touch config/production/database/command.sql
$ touch dbconfig/command.sql
config/production/database/ = dbconfig
違う名前をつけることによって
そのディレクトリへのアクセスや、ファイルの作成、削除なんかを
短縮系の自分が打ちやすい命令に変えることができるので
効率的に開発を進められますよ〜という、
お役立ち機能がシンボリックリンクの正体。
どうやって指定するのか
$ ln -s config/production/database dbconfig
これでconfig/production/database に対してdbconfigという
別名をつけることができる。
めちゃくちゃ便利、、!
環境変数と似てない?
よく「パスを通す」とか言われる環境変数。
シンボリックリンクの正体がわかると、ちょっと環境変数と似てるなー
なんて思ったりもしましたが。
環境変数・・・どこのディレクトリからでもアクセスできるようにしておくこと
シンボリックリンク・・・あくまでも現在の箇所からの近道
例えば今回の例でいうと
ホームディレクトリにPracticeとProductionがあったとして
さっき作ったdbconfigというシンボリックリンクは、
config/production/database/と同じ意味になるので
あくまでもPracticeディレクトリにいる時に使わないと意味がない。
環境変数でパスを通しておくと
どこからでもアクセスできるようになるので、
そうなるとやっぱり汎用的に使うものというよりかは
より大事な命令に使われることになるよね〜という理解に落ち着きました。
https://dotinstall.com/lessons/basic_unix_v2/41612