$ PATHにディレクトリを追加すると、そのサブディレクトリが再帰的に追加されないように見えます。それで、私はこれを行うことができますか?それともサポートしていない理由がありますか?
答え1
一般的なUNIXディレクトリ構造は、アプリケーションファイルを実行可能bin
ファイル、lib
ライブラリ、doc
ドキュメントなどのタイプ別にディレクトリにソートします。つまり、別のディレクトリにインストールされます。多くの場合、アプリケーションは複数のディレクトリにグループ化されます(多くのシステムには、および$PATH
3/usr/local/bin
つのディレクトリしかありません)。ディレクトリに実行可能ファイルとサブディレクトリの両方がある場合はほとんどありません。/usr/bin
/bin
$PATH
bin
場合によっては、指定されたディレクトリのサブディレクトリ内のすべてのサブディレクトリを次の場所に含めると便利です$PATH
。
for d in /opt/*/bin; do PATH="$PATH:$d"; done
しかし、これはほとんど起こりません。実行可能ファイルが非標準ディレクトリにある場合の一般的なアプローチは、パスのディレクトリ$PATH
にシンボリックリンクを作成することです。/usr/local/bin
stow
xstow
これに関連して、ユーティリティ(または)が役に立ちます。
答え2
答え3
これがサポートされていない理由の1つは、bin /(および同様の)ディレクトリがシンボリックリンクを使用して、インストーラの実際の実行可能ファイルを含む特定のディレクトリを指すためです。
したがって、(おそらくそうします)を$PATH
含めると、そのフォルダはRubyを実行するコードを含む特定のディレクトリ(たとえば)を指すシンボリックリンク(たとえば)でいっぱいになります。/usr/local/bin
ruby
../Cellar/ruby/2.1.3/bin/ruby
そのため、各実行可能ファイルのフォルダを指定する必要はありません$PATH
。通常、bin / typeディレクトリにあるシンボリックリンクはそれを処理します。
答え4
Mac OSでは答えがうまくいかなかったので、うまくいく方法を見つけました。
export PATH=$PATH:$(find $HOME/apps -type d -maxdepth 1 | paste -sd ":" -)
お役に立てば幸いです!
メモ:これにはフォルダ自体も含まれます。