The solution to the problem that 'there is no such file or directory' when executing in shell script

高洛峰
Release: 2017-01-09 13:42:52
Original
4173 people have browsed it

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
Copy after login

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)

In addition, when the SHELL program reports command not found, always check if there is any in your PATH There is no program that needs to use every command (the kind that does not specify an absolute path). With such a small program, you can check it line by line.

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!"
Copy after login

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!


source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template