Bash 脚本:错误的解释器 [英] Bash script: bad interpreter

查看:40
本文介绍了Bash 脚本:错误的解释器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题:我收到此错误消息:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆