Bash 脚本:错误的解释器 [英] Bash script: bad interpreter
问题描述
问题:我收到此错误消息:
Question: I get this error message:
导出:错误的解释器:没有那个文件或目录
export: bad interpreter: No such file or directory
当我执行这个 bash 脚本时:
when I execute this bash script:
#!/bin/bash
MONO_PREFIX=/opt/mono-2.6
GNOME_PREFIX=/opt/gnome-2.6
export DYLD_LIBRARY_PATH=$MONO_PREFIX/lib:$DYLD_LIBRARY_PATH
export LD_LIBRARY_PATH=$MONO_PREFIX/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=$MONO_PREFIX/include:$GNOME_PREFIX/include
export ACLOCAL_PATH=$MONO_PREFIX/share/aclocal
export PKG_CONFIG_PATH=$MONO_PREFIX/lib/pkgconfig:$GNOME_PREFIX/lib/pkgconfig
PATH=$MONO_PREFIX/bin:$PATH
PS1="[mono-2.6] w @ "
但 bash 路径似乎是正确的:
But the bash path seems to be correct:
asshat@IS1300:~/sources/mono-2.6# which bash
/bin/bash
asshat@IS1300:~# cd sources/
asshat@IS1300:~/sources# cd mono-2.6/
asshat@IS1300:~/sources/mono-2.6# ./mono-2.6-environment
export: bad interpreter: No such file or directory
asshat@IS1300:~/sources/mono-2.6# ls
download mono-2.4 mono-2.4-environment mono-2.6 mono-2.6-environment
asshat@IS1300:~/sources/mono-2.6# cp mono-2.6-environment mono-2.6-environment.sh
asshat@IS1300:~/sources/mono-2.6# ./mono-2.6-environment.sh
export: bad interpreter: No such file or directory
asshat@IS1300:~/sources/mono-2.6# ls
download mono-2.4-environment mono-2.6-environment
mono-2.4 mono-2.6 mono-2.6-environment.sh
asshat@IS1300:~/sources/mono-2.6# bash mono-2.6-environment
asshat@IS1300:~/sources/mono-2.6#
我做错了什么?或者这是 Lucid Lynx 的错误?
What am I doing wrong? Or is this a Lucid Lynx bug?
我做了chmod + x
推荐答案
第一行 #!/bin/bash
告诉 Linux 在哪里可以找到解释器.该脚本也应该可以通过 chmod +x script.sh
执行,您似乎已经这样做了.
The first line, #!/bin/bash
, tells Linux where to find the interpreter. The script should also be executable with chmod +x script.sh
, which it appears you did.
很可能您使用 Windows 编辑器创建了此文件,该编辑器会在每行的末尾放置一个
.这是dos/windows下的标准.OS X 将在每行的末尾放置一个
.但是,在 Unix/Linux 下,标准是在行尾放置一个
.
It is highly likely that you created this file with a windows editor, which will place a <cr><lf>
at the end of each line. This is the standard under dos / windows. OS X will place a <cr>
at the end of each line. However, under Unix / Linux, the standard is to just put a <lf>
at the end of the line.
Linux 现在正在寻找一个名为 /bin/bash
的文件来解释该文件,其中<cr>
为回车符,是Linux下有效的文件字符.这样的文件不存在.因此出现错误.
Linux is now looking for a file called /bin/bash<cr>
to interpret the file,
where <cr>
is a carriage return character, which is a valid file character under Linux. Such a file doesn't exist. Hence the error.
解决方案: 在 Linux 上使用编辑器编辑文件并去掉额外的 <cr>
.在 Windows 上编辑文件时通常可以使用的一种工具是 dos2unix
.
Solution: Edit the file with an editor on Linux and get rid of the extra <cr>
. One tool that usually works when the file is edited on Windows is dos2unix
.
这篇关于Bash 脚本:错误的解释器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!