考虑也stow。

考虑也stow。

我的~/bin文件夹包含具有任意目录级别的多个子文件夹。

该文件夹仅存放启动zsh时需要添加的可执行文件path,如何以$path简短有效的方式递归添加其文件夹及其子文件夹下的所有文件?

答案1

mkdir -p ~/tmp/a/b/c/{d,e}
path+=(~/tmp/a ~/tmp/a/**/*(N/))
print -l $path

这应该递归地将两者添加~/tmp/aPATH变量以及任何目录中。不像*(/)**链接问题这可以避免缓慢分叉到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

相关内容