私の~/bin
フォルダには、任意のディレクトリレベルを持つ複数のサブフォルダが含まれています。
このフォルダには、zshの起動時に追加する必要がある実行可能ファイルのみが保存されています。短く効率的な方法で、そのフォルダとサブフォルダの下のすべてのファイルをどのようにpath
再帰的に追加できますか?$path
答え1
mkdir -p ~/tmp/a/b/c/{d,e}
path+=(~/tmp/a ~/tmp/a/**/*(N/))
print -l $path
これにより、変数とディレクトリ~/tmp/a
の両方に再帰的に追加する必要があります。PATH
同じではない*(/)
**
リンクの問題これを行うとfind(1)
。
修飾子は、(隠されていない)ディレクトリがない場合、N
それをエラーとして処理しません。
答え2
それも考慮してくださいstow
。
stow
サブディレクトリにパッケージセットを作成できるツールです。コンテンツを一緒に保ちながらコンテンツを分離するのに役立ちます。ルートディレクトリ(たとえば~/bin
)にリンクを作成してこれを実行し、ファイルを追加および削除するときにこれらのリンクを管理するのに役立ちます。
/usr/local
さまざまなサブディレクトリ(etc、bin、lib...)のさまざまなファイルに接続されるため、よく使用されます。これにより更新する必要はありません$PATH
。
だから、
- パッケージ1
- ゴミ箱
- 倉庫1
- 倉庫2
- ゴミ箱
- パッケージ2
- ゴミ箱
- 倉庫3
- 倉庫4
- ゴミ箱
それからあなたは結局
- bin1 -> パッケージ 1/bin/bin1
- bin2 -> パッケージ 1/bin/bin2
- bin3 -> パッケージ 2/bin/bin3
- bin4 -> パッケージ 2/bin/bin4
- パッケージ1
- ゴミ箱
- 倉庫1
- 倉庫2
- ゴミ箱
- パッケージ2
- ゴミ箱
- 倉庫3
- 倉庫4
- ゴミ箱