问:我收到以下错误消息:
导出:错误的解释器:没有这样的文件或目录
当我执行这个bash脚本时:
#!/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路径似乎是正确的:
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
发布于 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
。
发布于 2010-05-16 04:22:27
脚本会不会使用了Dos换行符?
试着在上面运行dos2unix。
发布于 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
。
https://stackoverflow.com/questions/2841593
复制相似问题