リンクが現在のディレクトリからではなく、常に絶対パスを指すようにすることは良い習慣ですか?
私はこれを参照して話しています-ソフトウェアを維持する必要があり、以前のバージョンはすべて常に最新バージョンを指す必要があります。
「グッドプラクティス」を定義します。リンクが絶対パスを指しているかどうかは、ファイル間の関係によって異なります。
ファイルが常に同じ相対位置にあるが、移動できる場合(たとえば、のエイリアスbin/
)、それらは相対位置である必要があります。実際のファイルが既知の場所にある場合(たとえば、デフォルトの構成ファイルをにリンクする場合~/.config
)、絶対パスを使用します。
一般論としては同意できないと思います。
相対リンクの方が理にかなっているケースは間違いなくあります。たとえば、プロジェクトのディレクトリ ツリーを使用します。プロジェクトがバックアップされたり、別の場所に移動されたり (複製されていても) された場合、絶対リンクは混乱したり悲惨な結果を招く可能性があります。
システム全体のツールについて話している場合でも、相対リンクが意味を持つ場合とそうでない場合があります。grep のような非常に一般的なツールへのリンクと、同じホスト上にある gnu コンパイラ ツールの複数のバージョンやターゲット フレーバーのようなものを比較してください。後者の場合、特定のツール バージョンへの絶対リンクがおそらく必要になります。
それはすべて、それぞれの場合に本当にやりたいことに戻ります。一般的な答えは、一般化された答えはないということです。
何をしたいかによります。私の Linux システムには、両方の種類のシンボリック リンクがあります。
find /usr /bin /lib -type l -print0 | xargs -0 ls -ld | less
そのための「良い習慣」はないと思います。さまざまなユースケースがあります。
たとえば、/home/.../application にローカルにインストールされたプログラムを含むツリーを保存する場合、「デフォルト構成」を絶対パスなしで特定の構成にシンボリックリンクしたい場合があります。そうすれば、ツリー全体を /home/.../application-other-instance に移動しても、構成ファイルへのリンクは正しいままです。
一方、ローカル ディレクトリの /etc/... にあるグローバル ファイルを参照する場合は、絶対パスのシンボリック リンクを使用します。これにより、どこに移動しても同じファイルを指していることが保証されます。
何を達成したいのかを考えるだけで、相対/絶対パスの決定は明白であるか、無関係になります。「決してそれをしない」ルールはおそらく次のとおりです。ルートディレクトリ/ xxxの何かにリンクしないでください。