【发布时间】:2014-02-28 19:22:43
【问题描述】:
我有一个脚本可以调用其他一些 bash、python 和 ruby 脚本。该脚本类似于以下内容:
#!/bin/bash
set -x
./aux1.py
./aux2.sh
当我从命令行运行脚本时,它会运行,但会给出以下输出:
./script.sh: line 5: ./aux1.py: Permission denied
aux.py 脚本顶部有 #!/usr/bin/env python;当我从命令行使用./aux.py 调用它时,它很好,但是当以完全相同的方式从这个脚本调用时,我得到了这个错误。奇怪的是,这只发生在我使用./script.sh 运行脚本时;当我使用bash script.sh 运行脚本时,辅助脚本运行良好。
我用的是Linux,为什么会这样?
2014 年 3 月 3 日更新
PATH 中没有任何冲突,所有脚本都是 chmod +rx。 uname -srvmo给了
Linux 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Dec 13 06:58:20 EST 2013 x86_64 GNU/Linux
uname -a 中没有更多信息。 SELinux 已启用,但我不是管理员,因此无法访问该信息。
【问题讨论】:
-
我应该补充一点,所有脚本(
script.sh、aux1.py和aux2.py)都具有读取和执行权限。 -
无法在我的 Fedora 19 系统上重现它。你也可以发布你的
aux1.py吗? -
另外,检查您的文件是否有本地 UNIX 换行符;如果你有 DOS 换行符,那么
#!/usr/bin/env python实际上会寻找一个名为python^M的解释器,而不是python。 -
您是否检查了
script.sh中的任何隐藏的、不需要的字符?你可以检查od -c script.sh,或者从头开始制作一个新版本,因为它很小,然后再试一次。 -
这个问题缺乏足够的信息来诊断问题。 OP 的评论声称存在操作系统级别的权限,并且后续问题(关于文件系统挂载选项、隐藏字符等)尚未得到回应。