Linux 将可执行文件移动到$PATH中的其他文件夹后,找不到该文件

Linux 将可执行文件移动到$PATH中的其他文件夹后,找不到该文件,linux,environment-variables,Linux,Environment Variables,linux上的一个小实验 root@ubuntu:/# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games root@ubuntu:/# which ls /bin/ls root@ubuntu:/# mv /bin/ls /root root@ubuntu:/# ls bash: /bin/ls: No such file or directory

linux上的一个小实验

root@ubuntu:/# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
root@ubuntu:/# which ls
/bin/ls
root@ubuntu:/# mv /bin/ls /root
root@ubuntu:/# ls
bash: /bin/ls: No such file or directory
root@ubuntu:/# export PATH=$PATH:/root
root@ubuntu:/# ls
bin  boot  cdrom  dev  etc  home ...
root@ubuntu:/# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/root
root@ubuntu:/# mv /root/ls /bin/
root@ubuntu:/# ls
bash: /root/ls: No such file or directory
我刚刚将/bin/ls移动到/root,然后将/root添加到$PATH,现在ls是可执行的

hash -d ls

当我再次将/root/ls移动到/bin/时,“ls”无法执行,系统就是找不到文件“ls”。那么问题出在哪里呢?

删除bash为可执行文件缓存的路径

hash -d ls

它能够禁用bash的缓存吗?