Home >Backend Development >Python Tutorial >The solution to the problem that 'there is no such file or directory' when executing in shell script
The reason why bad interpreter:No such file or directory appears is the file format problem. This file was written under Windows. The newline method is different from Unix, but it can't be seen at all if you don't set it under vim.
Problem analysis:
1. Transfer the SHELL file written under windows to Linux for execution, and an error message appears.
2. Error message: bad interpreter: There is no such file or directory.
Cause of the problem:
Because the operating system is windows and the script is edited under windows, there may be invisible characters. The script file is in DOS format
, that is, the end of each line is marked with \r\n, and its ASCII codes are 0x0D, 0x0A.
Solution:
There are many ways to view it Is this file in DOS format, UNIX format, or MAC format?
(1) vim filename
Then use the command: set ff
to see the words dos or unix, if it is indeed in dos format , then use set ff=unix to force it to unix format, and then save and exit to run.
You can use the two small programs
1. unix2dos or dos2unix to convert text file formats on different platforms. It is very simple. In djgpp, the names of these two programs are dtou and utod, u represents unix, d Represents dos
2. You can also use tools like sed to do it:
sed ‘s/^M//' filename > tmp_filename mv -f tmp_filename filename
Special note: ^M is not the ^ and letter M produced by pressing shift + 6, it is a character, and its ASCII is 0x0D, the way to generate it is to press CTRL+V first, and then press Enter (or CTRL+M)
Attachment: Writing one less / causes the problem of not having that file or directory
Today, when I was looking through the simple shell script I wrote before, I found a problem:
When ./ always prompts when running: (bash: ./hello.sh: bin/bash: bad interpreter: no such file or directory), but it works correctly when running with sh.
Original script :
(Try to see if you can see the error at a glance)
#!bin/bash echo "Hello Linux!"
Later, after checking several times, I found that something was missing from what I wrote.
I should change the first line It became #!/bin/bash, and one less /
was written. Alas, it is a very simple question. I have never found such an error before! The shell script is indeed easy to use, but the only difficulty is that the format requirements are too high. High!
For more solutions to the problem of "There is no such file or directory" when executing in a shell script, please pay attention to the PHP Chinese website for related articles!