質問: /etc/hosts ファイルのリンクについて solaris8を使用しております。 /etc/hosts シンボリックリンクについて質問します。 つい先日、/etc/hosts はファイル実体ではなく、/etc/inet/hosts へのシンボリックリンクであるということを知りました。 普段、ipアドレスとホスト名を確認する際には、/etc/hosts から情報を得ていますが、当該実体ファイルが、/etc/hosts へリンクされている意図は何でしょうか。 シンボリックリンク作成については、/etc/hosts ファイルに限ったことではないと思いますが、シンボリックリンクを使用することの利点についても併せて教えていただけると幸いです。 ご存知の方がいたら回答お願いします。
回答: >シンボリックリンクを使用することの利点 シンボリックリンクといかハードリンクを含めてのリンクとしての話とした上で、利点の一つを。 例えば、あるコマンドがあって呼び出されたコマンド名によって動作する機能が変わるような場合、その機能ごとにコマンド名を変えてコピーして置いたのではその分余計にディスク容量が取られます。 リンクを使用するとコピーした時より比べるとディスク容量は取られません。 また、そのようなコマンドで修正が入って置換が発生した場合、個々にコピーしてコマンドをおいた場合、コマンドの置換のもれが発生するかもしれません。しかし、リンクの場合だと大元のファイルの置換だけで済みます。 ハードリンクでの話しになりますが、(solarisでもそうだと思いますが)viコマンドとexコマンドがこれに当たります。 viコマンドとexコマンドをls -liで見てみてください。 おそらく一番左に数値が表示されると思います。 この数値は、iノード番号と言ってファイルに対し必ず1つ付くもので、この番号が一致するという言う事は実体は同じという事です(ハードリンクの場合)。 これは、シンボリックリンクを使用しても同じ事が出来ます。 違いは、ハードリンクが同一ファイルシステム内でしかリンクが張れない事に対し、シンボリックリンクは同一ファイルシステム内でのリンクはもちろん異なるファイルシステム間でもリンクが張れます。 以下、手元にあるfreebsdでの例になります。 例1) viとex (ハードリンク) %ls -li /usr/bin/vi /usr/bin/ex 70241 -r-xr-xr-x 6 root wheel 279020 sep 25 05:58 /usr/bin/ex 70241 -r-xr-xr-x 6 root wheel 279020 sep 25 05:58 /usr/bin/vi 例2) mailqとnewaliases(シンボリックリンク) %ls -l mailq newaliases lrwxr-xr-x 1 root wheel 21 sep 25 05:58 mailq -> /usr/sbin/mailwrapper lrwxr-xr-x 1 root wheel 21 sep 25 05:58 newaliases -> /usr/sbin/mailwrapper