これに回答すべての/opt/tool/binサブディレクトリをPATHに追加する方法を提供します。
for d in /opt/*/bin; do PATH="$PATH:$d"; done
しかし、ギルスはこう言いました。
しかし、これはほとんど行われません。非標準ディレクトリの実行可能ファイルが$ PATHにある場合、一般的なアプローチはパスのディレクトリ(/usr/local/binなど)にシンボリックリンクを作成することです。これお店これに関連して、ユーティリティ(またはxstow)が役に立ちます。
最後のものその他答えはこの主張を支持します。
/opt/*/bin
ただし、実行可能ファイルへのシンボリックリンクが望ましい理由はわかりません。これにより、不要な追加メンテナンスが追加されるようです。
PATHを更新するのではなく、optで実行可能ファイルにシンボリックリンクが優先される解決策であるのはなぜですか?
ベストアンサー1
質問に答えようとしていますが、どのソリューションが「最適」なのかを説明するのではなく、Gilesがシンボリックリンクを使用してツールセットを提供し、メンテナンスの側面を解決するように提案する理由を説明するためです。結局のところ、システムに適したソリューションが何であるかを判断するのは、ローカル管理者の役割です。
bin
新しいツールを追加するには、ユーザーのディレクトリを追加してすべてのPATH
ユーザーの変数を更新する必要がありますPATH
(この変数は、新しいシェルセッションが開始されるまで適用されません)。
GNUを使用すると、Gillesが提案したように、たとえばツールごとに1つのディレクトリ、各ツールには独自のサブディレクトリなどのディレクトリstow
構造があります。各ツールは通常、インストールプレフィックスを指定してインストールされます。/opt/stow
bin
lib
/opt/stow/toolname
/opt
サブディレクトリはそのディレクトリとシンボリックリンクされているため、stow
メンテナンスコストが最小限に抑えられます。追加する必要がある唯一のディレクトリはPATH
。/opt/bin
/opt/sbin
一般的には
/opt/stow/tool-A-1.23
/opt/stow/tool-A-1.25
/opt/stow/tool-B-3.0
それから:
cd /opt/stow
stow tool-A-1.23
stow tool-B-3.0
これにより、/opt
適切なシンボリックリンクで階層がいっぱいになり、アクセスできます/opt/bin
。これは、ツール実行可能ファイル間の名前の競合がないと仮定しますが、これらのすべてのパスをPATH
。
1.23から1.25に切り替えるにはtool-A
、
cd /opt/stow
stow -D tool-A-1.23
stow tool-A-1.25
手動でシンボリックリンクを維持したり、ユーザーの変更を行う必要はなく、PATH
変更はすべてのユーザーにすぐに適用されます。