Zsh: adiciona pasta a $ path recursivamente

0

Eu tenho a pasta ~/bin que contém várias subpastas com níveis de diretório arbitrários.

Esta pasta somente para arquivos executáveis que precisam ser adicionados ao path ao iniciar o zsh, como recursivamente adicionar todos os arquivos sob sua pasta e suas subpastas a $path de uma maneira curta e efetiva?

    
por Tuyen Pham 09.11.2018 / 17:27

2 respostas

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

O qual deve adicionar ~/tmp/a à variável PATH , bem como quaisquer diretórios *(/) recursively ** . Ao contrário do link da pergunta isso evita um fork lento para find(1) .

O qualificador N é para não considerá-lo um erro se não houver nenhum diretório (não oculto) lá.

    
por 09.11.2018 / 17:41
2

Considere também stow .

stow é uma ferramenta que permite criar um conjunto de pacotes em subdiretórios: ajuda a manter as coisas separadas, mantendo-as juntas. Isso é feito criando links para eles em um diretório raiz (por exemplo, ~/bin ) e ajudando você a gerenciar esses links quando os arquivos são adicionados e removidos.

É freqüentemente usado para /usr/local , ele irá vincular a vários arquivos em vários subdiretórios (etc, bin, lib…). Desta forma, não há necessidade de atualizar $PATH .

Então, se você tiver

  • package1
    • bin
      • bin1
      • bin2
  • package2
    • bin
      • bin3
      • bin4

então você vai acabar com

  • bin1 - > package1 / bin / bin1
  • bin2 - > package1 / bin / bin2
  • bin3 - > package2 / bin / bin3
  • bin4 - > package2 / bin / bin4
  • package1
    • bin
      • bin1
      • bin2
  • package2
    • bin
      • bin3
      • bin4
por 09.11.2018 / 18:13