Eu tenho um script de construção que pode mudar o que os binários estão em meu $ PATH (ele não edita o $ PATH em si, mas adiciona / exclui arquivos para pastas que já estão no $ PATH). O preenchimento automático do zsh não é atualizado para refletir os arquivos que foram adicionados / excluídos em resposta à compilação, portanto, eu preciso reiniciar o shell ou executar o shell 'rehash' integrado para que ele atualize seu cache de preenchimento automático. / p>
Eu decidi que queria automatizar a execução do rehash. De início, fiz isso:
build() {
~/bin/real_build && rehash
}
Mas as funções do shell são executadas em seu próprio subshell, então o rehash atualizaria o cache para o subshell, em vez do shell no terminal que eu estava usando. Então eu mudei para isso:
alias build='~/bin/real_build && rehash'
O que funciona, exceto quando eu quero passar argumentos para construir. Se eu passar "limpo" eu gostaria que fosse executado:
~/bin/real_build clean && rehash
Mas, em vez disso, será:
~/bin/real_build && rehash clean
Então, eu estou preso - eu posso usar um alias e não ser capaz de passar argumentos, ou posso usar uma função e não atualizar as entradas de autocompletar. Existe uma maneira de fazer os dois trabalhos?