私にとって本当に必要な機能は、実際のディレクトリコレクションをマージして「仮想ディレクトリ」を作成する機能です(したがって、ディレクトリは/usr/bin
実際にはディレクトリ配列を指す仮想ディレクトリになります)。
ただし、この機能は一部のオペレーティングシステムで使用できますが、普遍的ではなく、たとえば来年に使用するオペレーティングシステムでこの機能をサポートするとは期待できません。
現在、私は回避策として$ PATH変数を使用しています。ここでは、「マージ」したいディレクトリ全体を保存します(マンページには$ MANPATHなどの他の変数を使用し、ライブラリには同様の変数を使用する予定です)。 )。
現在、「マージディレクトリ」コレクションは大きくないため、パフォーマンスの問題は発生しません。しかし、将来のディレクトリの数が何百ものものに達した場合、問題が発生するかどうか疑問に思います(わかりません)。そんなに多くのことが起こるかどうかはわかりません)。
私の推測では、近い将来に「マージされた」ディレクトリの予想数はおおよそこの程度になります。40到着50。
この機能で私が見つけた回避策は主にシンボリックリンク管理に基づいており、マージされたすべてのディレクトリ内のすべてのファイルを「統合」ディレクトリからそのファイルを指すシンボリックリンクに効果的にミラーリングすることです。しかし、このアプローチは私にとって複雑すぎるようです。きれいでクリーンなソリューションのようには見えません。
$PATHメソッドを引き続き使用できると思いますか?または、中断して再検討して他のオプションを見つける必要がありますか?
答え1
シェル通常外部ユーティリティが見つかった場所に関する情報をキャッシュします。つまり、キャッシュされていない各ユーティリティに対して実際に一度だけ照会するだけです。
$PATH
合理的なシェルを使用している場合は、すぐに深刻なパフォーマンスの問題が発生するとは思わない。
代替ソリューションを確認するには、以下を確認してください。GNUストー。
答え2
この $PATH
ソリューションは、起動時に成功した設定に大きく依存します$PATH
。環境設定が破損/削除された場合、全体の設定は失敗します。
シンボリックリンク方式は、設定が少し複雑ですが、基本的に自立的であるため、より強力です。
GNU StowプロジェクトとニックOS実際にどのように機能するかについての洞察を得るために使用または調査できるシンボリックリンクアプローチを使用する2つの方法があります。