アプリの作りの話から始める必要があるのかなと思います。
まず、いわゆるアプリにはグラフィカルなGUIアプリと
ターミナルでコマンドを実行するCUIアプリに大別できます。
MacでGUIアプリを作った場合、/Applicationsにいれることで、
アプリケーションの一覧やLaunchpadなどに現れるようになります。
ですので、ほとんどのアプリは/Applicationsに入れるようになっています。
しかし、CUIアプリは/Applicationsにいれても意味がありません。
なぜなら、ターミナルからコマンドを実行しようとしても、
/Applications配下にある各アプリについてコマンドがあるかを
確認しないためです。
ではどうするかというと、本体は全く別の場所において、コマンドのシンボリックリンクを
パスが通っている/usr/binまたは/usr/local/binに置く場合が多いです。
/usr/bin等にコマンドを置くと、ターミナルからコマンド名だけで
実行できるようになるからです。
ただし、/usr/bin等におくのはコマンドへのリンクのみで、
本体をどこに置くのかはアプリによって違います。
GUIアプリとしての機能もある場合は/Applicationsに一緒に置くものもあります。
システムに深く関わるものですと/System/Library配下に置く場合があります。(例えばJava)
UNIX/Linux由来のCUIアプリは/optに置く傾向があります。
/optはPOSIX(UNIX共通の決まり事、MacもPOSIXに準拠している)で
サードパーティーのアプリを置く場所として決めているからです。
では、Vagrantはどうかというと、VagrantはもともとRubyGemで
いれることから始まっており、UNIX/Linux由来のCUIアプリです。
そのため、POSIXの慣習に従って/optへ入れるようになっています。
なので本体は/opt/vagrantにあるわけです。
ただ、これだけですとターミナルからコマンドを実行できません。
(ターミナルは/opt/vagrantにvagrantがあるなんて知らないからです。)
追加で、/usr/local/bin/vagrantというシンボリックリンクを作成して、
本体の/opt/vagrant/bin/vagrantに向ける作りなっています。
2015/08/01 07:35 編集
2015/08/01 23:42 編集