首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Bash脚本:错误的解释器

Bash脚本:错误的解释器
EN

Stack Overflow用户
提问于 2010-05-16 04:09:03
回答 7查看 81K关注 0票数 28

问:我收到以下错误消息:

导出:错误的解释器:没有这样的文件或目录

当我执行这个bash脚本时:

代码语言:javascript
复制
#!/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路径似乎是正确的:

代码语言:javascript
复制
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的bug?

I did chmod + x

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-05-16 04:21:10

第一行#!/bin/bash告诉Linux在哪里可以找到解释器。该脚本还应该可以使用chmod +x script.sh执行,看起来您确实做到了。

很可能是您使用windows编辑器创建了此文件,该编辑器将在每行的末尾放置一个<cr><lf>。这是dos / windows下的标准。OS将在每一行的末尾放置一个<cr>。然而,在Unix / Linux下,标准是将<lf>放在行的末尾。

Linux现在正在寻找一个名为/bin/bash<cr>的文件来解释该文件,其中<cr>是一个回车字符,在Linux下这是一个有效的文件字符。这样的文件不存在。因此出现了错误。

解决方案:在Linux上用编辑器编辑文件,去掉多余的<cr>。在Windows上编辑文件时,通常使用的一个工具是dos2unix

票数 51
EN

Stack Overflow用户

发布于 2010-05-16 04:22:27

脚本会不会使用了Dos换行符?

试着在上面运行dos2unix。

票数 10
EN

Stack Overflow用户

发布于 2010-10-23 06:39:44

看起来好像已经配置了一些东西来覆盖export内置的东西。例如,这可以通过导出函数或enable内置来完成。尝试将type export放入脚本中进行检查。如果您正在设置BASH_ENV,您可能不应该这样做。

如果bash被调用为sh,它将启用POSIX模式,并且不允许使用POSIX所要求的函数覆盖export。同样,作为/bin/sh安装的大多数其他shell在这一点和/或不允许通过从环境中导入函数来严重扰乱脚本的执行环境。

顺便说一句,这个脚本似乎是被设计成源代码的,即. ./mono-2.6-environment而不是./mono-2.6-environment

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2841593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档