ソフトリンク変更後に「コマンドキャッシュ」を更新するには?

ソフトリンク変更後に「コマンドキャッシュ」を更新するには?

を使用して私のシステムのいくつかのソフトリンクを変更しましたln -f -s。リンクを見ると、ls -l正しい宛先を指していることがわかります。

ただし、コマンドを実行しようとすると、まだ「古い」ターゲットを使用しようとします。

新しく作成されたソフトリンクを使用するようにシステムに指示するために「コマンドキャッシュ」をフラッシュするコマンドはLinuxにありますか?

たとえば、

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

実行mpirun -np 4 hello_world結果は、「古い」ターゲットであるIntel MPIを呼び出します。

答え1

私はあなたがで見つけたものを変更することについて話していて、あなたが$PATHいるシェルがまだ元のプログラムを始めていると仮定します。

それからあなたが探しているもの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.

関連情報