In a running system, you have changed some directories that previously existed in the PATH environment variable. Program No such file or directory error message may appear after the directory is stored.
For example, if python was previously stored in/usr/bin/, delete/usr/bin/Python temporarily and generate Python under/usr/local/bin according to the normal logic, if you directly execute python, you will find/usr/local/bin/python, because/usr/local/bin is also in the environment variable path, but Bash appears: /usr/bin/Python: no such file or directory
Why?
The specific reasons are as follows:
Bash saves a command that has been executed since it was started, instead of searching $ path every time. If the actual location of python is changed after the last Python command is executed, bash will also execute according to the path recorded in the original hash table, but because the original execution file is no longer stored, an error message of no such file or directory will be reported.
By executing the Hash command, we can easily see that:
Root @ Ubuntu :~ $ Hash
Hits command
3/usr/bin/which
2/usr/bin/File
4/usr/bin/sudo
1/bin/mv
1/usr/bin/whereis
7/usr/bin/Python
Root @ Ubuntu :~ $
Solution:
The solution is also simple. Reset the bash hash table. For example, execute hash-D python to delete the python records in the hash table. If you execute Python again, bash searches $ path to get the new Python path.