を使用して私のシステムのいくつかのソフトリンクを変更しました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.