Tuyen Pham Asked: 2018-11-10 08:27:51 +0800 CST2018-11-10 08:27:51 +0800 CST 2018-11-10 08:27:51 +0800 CST Zsh:递归地将文件夹添加到 $path 772 我的~/bin文件夹包含多个具有任意目录级别的子文件夹。 该文件夹仅用于启动zsh时需要添加的可执行文件path,如何将其文件夹及其子文件夹下的所有文件递归添加到$path简短有效的方式? environment-variables zsh 2 个回答 Voted Best Answer thrig 2018-11-10T08:41:16+08:002018-11-10T08:41:16+08:00 mkdir -p ~/tmp/a/b/c/{d,e} path+=(~/tmp/a ~/tmp/a/**/*(N/)) print -l $path 它应该递归地添加~/tmp/a到PATH变量以及任何目录中。与链接的问题不同,这避免了缓慢的分叉到.*(/)**find(1) N如果那里没有(非隐藏)目录,则限定符不会将其视为错误。 ctrl-alt-delor 2018-11-10T09:13:06+08:002018-11-10T09:13:06+08:00 考虑也stow。 stow是一个允许您在子目录中创建一组包的工具:它有助于将事物分开,同时将它们保持在一起。它通过在根目录(例如~/bin)中创建指向它们的链接来实现这一点,并在添加和删除文件时帮助您管理这些链接。 它通常用于/usr/local链接到各种子目录(etc、bin、lib ......)中的各种文件。这样就不需要更新了$PATH。 所以如果你有 包1 垃圾桶 bin1 bin2 包2 垃圾桶 bin3 bin4 那么你最终会得到 bin1 -> package1/bin/bin1 bin2 -> package1/bin/bin2 bin3 -> 包 2/bin/bin3 bin4 -> package2/bin/bin4 包1 垃圾桶 bin1 bin2 包2 垃圾桶 bin3 bin4
它应该递归地添加
~/tmp/a
到PATH
变量以及任何目录中。与链接的问题不同,这避免了缓慢的分叉到.*(/)
**
find(1)
N
如果那里没有(非隐藏)目录,则限定符不会将其视为错误。考虑也
stow
。stow
是一个允许您在子目录中创建一组包的工具:它有助于将事物分开,同时将它们保持在一起。它通过在根目录(例如~/bin
)中创建指向它们的链接来实现这一点,并在添加和删除文件时帮助您管理这些链接。它通常用于
/usr/local
链接到各种子目录(etc、bin、lib ......)中的各种文件。这样就不需要更新了$PATH
。所以如果你有
那么你最终会得到