Como posso obter $ PATH para sempre incluir $ (pwd) /sub_directory/.bin

3

Se o caminho ~/dev/project1/node_modules/.bin/ionic existir e meu diretório de trabalho for ~/dev/project1 , eu gostaria de poder digitar apenas ionic e apertar enter.

Eu poderia incluir todos esses subdiretórios no PATH, mas estou curioso para saber se há um jeito mais limpo. Eu estou olhando para adicionar um pouco de magia, então o meu caminho sempre inclui esse subdiretório em relação ao meu diretório de trabalho atual.

Pontos de bônus se você puder pesquisar todos os diretórios pai desse subdiretório e adicionar todos eles ao caminho.

    
por camomileCase 26.02.2015 / 19:44

1 resposta

2

Você pode colocar caminhos relativos no caminho de pesquisa. É perigoso, porque pode fazer com que você execute binários inesperados quando estiver em um diretório que não faz parte do seu projeto; não faça isso em uma máquina multiusuário.

PATH=…;node_modules/.bin/ionic;…

Para mais segurança e flexibilidade, você pode alterar o caminho de pesquisa sempre que o diretório atual for alterado. No seu .bashrc :

cd () { builtin cd "$@" && chpwd; }
pushd () { builtin pushd "$@" && chpwd; }
popd () { builtin popd "$@" && chpwd; }
chpwd () {
  if [[ $PATH = */node_modules/.bin/ionic ]]; then
    PATH=${PATH%:*}
  fi
  if [[ $PWD =~ ^"$HOME/dev/"[^/]* ]]; then
    project_root=${BASH_REMATCH[0]}
    PATH=$PATH:${project_root}/node_modules/.bin/inoic
  fi
}
chpwd
    
por 27.02.2015 / 00:38

Tags