いくつかのプログラムやシステムがシンボリックリンクに依存しているのはなぜですか?

いくつかのプログラムやシステムがシンボリックリンクに依存しているのはなぜですか?

コンテキスト

ls/cd/treeマウントされたドッカーボリュームから永続ファイルを見つけるためにファイルシステムをナビゲートするとき、より多くのシンボリックリンクを見つけるために無限に続くディレクトリを解放することは困難であることがわかりました。検索結果が満足のいく回答を得られなかったため、間違った質問かもしれません。

質問

いくつかのプログラムやシステムがシンボリックリンクに依存しているのはなぜですか?

ここに歴史クラスがありますか?ドットファイルの起源に関するRob Pikeの物語

ウィキペディアのページを読みました。ファイルシステムそしてシンボリックリンク、完全に説明されています。しかし、なぜ

はい

macOSでは、次のディレクトリは完全にシンボリックリンクです。

  • /usr/local/bin
  • /usr/local/var/homebrew/linked

ベストアンサー1

多くのシステム頼る存在するシンボリックリンク本質的に基本設定処理

プログラム名と実行する必要のあるコードとの間の関係は常にあいまいではありません(1対1の関係)。

1対多:共通プログラムのさまざまな実装がシステムに共存でき、ユーザーと履歴スクリプトは気にする必要がなく、興味がありません。

最も基本的なshコマンドを考えてみましょう。殻だけが多いバッシュ、csh、ksh、zsh...pffff...そして多くの関連バイナリだけがシステムに共存できます。次のいずれかの簡単な要求があるときに有効にする必要があるものは何ですかsh

私のシステムでは、任意の決定が簡単です。

616457 0 lrwxrwxrwx 1 root root 4 14 mai     2021 /bin/sh -> bash

もちろん、私たちはすぐにそれを考えますshが、一般的に使用される多くのコマンド名(awk、bzip2、bc、cpio、gzip、lex、tar、yacc...)私のシステムでは:

616450 0 lrwxrwxrwx 1 root root 15  8 juil.   2020 /bin/awk -> ../usr/bin/gawk
484973 0 lrwxrwxrwx 1 root root 10  8 juil.   2020 /usr/bin/yacc -> yacc.bison
484674 0 lrwxrwxrwx 1 root root 4 27 nov.   02:14 /usr/bin/lex -> flex

もちろん、同じプログラムの異なるバージョンが共存している場合、これはすべて似ています。実行中のカーネルのソースコードは言うまでもなく、コンパイラ、言語ソルバーを主に考慮してください。私のシステムでは:

484470 0 lrwxrwxrwx 1 root root 43 26 nov.   23:43 /usr/bin/gcc -> /usr/x86_64-pc-linux-gnu/gcc-bin/10.4.0/gcc
485883 0 lrwxrwxrwx 1 root root 19  7 déc.  01:41 /usr/src/linux -> linux-5.4.225-0707a

多対一:別のニーズ頼る/sysシンボリックリンクは、情報を検索するときに複数のパスを介して簡単にアクセスできる一意の擬似ファイルに情報を含む非常に特定のファイルシステムに適しています。

おすすめ記事