O que o comando hash -r faz? [duplicado]

2

Eu recentemente mudei para o linux em tempo integral no Windows e enquanto eu estava tentando atualizar meu pacote npm usando n , eu obtive os novos binários em /usr/local/bin e a versão anterior estava em /usr/bin . Então, foi sempre escolhendo a versão anterior.

Conforme recomendação de outro usuário, usei o comando hash-r e funcionou. Mas eu não sei o que aconteceu.

Seria muito útil se alguém pudesse explicar seus aspectos internos para mim.

    
por gschambial 02.09.2017 / 11:53

2 respostas

3

hash é um comando interno do shell bash . Para um resumo do que você faz, digite help hash no prompt do shell:

$ help hash
hash: hash [-lr] [-p pathname] [-dt] [name ...]
    Remember or display program locations.

    Determine and remember the full pathname of each command NAME.  If
    no arguments are given, information about remembered commands is displayed.

    Options:
      -d    forget the remembered location of each NAME
      -l    display in a format that may be reused as input
      -p pathname   use PATHNAME as the full pathname of NAME
      -r    forget all remembered locations
      -t    print the remembered location of each NAME, preceding
            each location with the corresponding NAME if multiple
            NAMEs are given
    Arguments:
      NAME  Each NAME is searched for in $PATH and added to the list
            of remembered commands.

    Exit Status:
    Returns success unless NAME is not found or an invalid option is given.

Portanto, hash lembra os locais dos programas e hash -r os esquece.

    
por steeldriver 02.09.2017 / 12:01
0

O shell rastreia onde os executáveis, como npm, residem para evitar a necessidade de pesquisar a variável de ambiente PATH toda vez que você quiser executar algo.

  • O argumento -r (reset) para o hash limpa o cache.

  • Se você quiser ver quais comandos o hash lembrou, simplesmente digite hash sozinho sem argumentos.

Você pode desativar completamente o cache, digitando set + he renanciá-lo novamente via set -h

    
por Robert Longson 02.09.2017 / 12:02