Como atualizar o 'cache de comandos' após a mudança de links suaves?

4

Alterei vários links no meu sistema com ln -f -s . Quando vejo o link com ls -l , vejo que eles apontam para o alvo certo.

No entanto, quando tento executar o comando, ele ainda tenta usar o alvo "antigo".

Existe um comando Linux para atualizar o 'cache de comando' para dizer ao sistema para usar os soft links recém-criados?

Por exemplo:

OPEN_MPI_PATH=/usr/lib64/mpi/gcc/openmpi
ln -f -s ${OPEN_MPI_PATH}/bin/mpirun  /usr/bin/mpirun
ls -l /usr/bin/mpirun
$ /usr/bin/mpirun -> /usr/lib64/mpi/gcc/openmpi/bin/mpirun

A execução de mpirun -np 4 hello_world resulta em uma chamada para a Intel MPI, que era uma meta "antiga".

    
por mabalenk 08.07.2014 / 17:45

1 resposta

7

Suponho que você está falando sobre a alteração de algo encontrada em $PATH e que o shell em que você está ainda está executando o programa original.

Se sim, o que você está procurando é hash -r

$ 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 is 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.
    
por 08.07.2014 / 17:50