PATH(環境変数)のワイルドカード文字

PATH(環境変数)のワイルドカード文字

私のホームディレクトリにローカルに多くのアプリがインストールされています。グローバルに使用できるように、次のPATH場所に追加しました.bashrc

PATH="$PATH:/home/user/apps/app1/bin"
PATH="$PATH:/home/user/apps/app2/bin"
PATH="$PATH:/home/user/apps/appn/bin"

新しいアイテムをすべて追加する必要がないようにするにはどうすればよいですか?私はこれを試していますが、動作しません。

PATH="$PATH:/home/user/apps/*/bin"

ノート:ループを使用して追加できることを知っていますが、PATH変数が大きすぎるのが心配で、どういうわけかワイルドカードを使用できるかどうかを知りたいです。

ベストアンサー1

ワイルドカード文字は$PATH拡張されません。 ~によるとバッシュマニュアル、パスは次のとおりです。

コロンで区切られたリスト目次シェルは次のコマンドを探します。

(私の強調)。

反対方向から来て、命令検索・実行部マニュアルの一部は次のとおりです。

名前がシェル関数でも組み込み関数でもなく、スラッシュを含まない場合、Bashは$ PATHのすべての要素を検索します。目次その名前の実行可能ファイルが含まれています。

...(私の強調) - パス要素の特別な処理については言及せず、単にディレクトリでなければならないということです(現状のまま)。

bash変数のサイズ制限が何であるかはまだわかりません。利用可能なメモリのようです。 PATHはエクスポートする必要はありませんが、多くの人がエクスポートした場合は、他の環境変数とパラメータで調整する必要がありますgetconf ARG_MAX(参照:https://unix.stackexchange.com/a/124422/117549)。 bashはハッシュテーブルを使用して以前に見つかったコマンドの場所を(セッションごとに)記憶するため、大きなPATHディレクトリは多くのパフォーマンスオーバーヘッドを引き起こすべきではありません。

個々のアプリケーションディレクトリをPATHに追加することに制限(視覚的または技術的)がある場合は、各アプリケーションのすべてのファイルをリンクできる "symlink"ディレクトリをPATHに追加することをお勧めします。

おすすめ記事