箱のプログラミング日記。

渋谷の自社開発企業でRails書いてます。

シンボリックリンクとは

f:id:y_hakoiri:20191102134313j:plain

先日、環境構築で「シンボリックリンクを作成する」みたいな項目があり、

気になって調べたもののいまいちよくわからず。。

 

たまたまドットインストールで

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