我有一个脚本,它调用其他一些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 已启用,但我不是管理员,因此无法访问该信息。
在启动主脚本之前,您必须确保所有下标都具有正确的权限。特别是,您对自己(您的用户和文件所有者)执行文件的权限感兴趣。这是一个关于权限的简短教程。http://blog.pluralsight.com/linux-file-permissionshttp://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions
如果这是问题所在(看起来如此),更简单的解决方案是运行以下命令
chmod u+x script.sh aux1.py aux2.sh
要检查您是否具有执行权限,只需运行
ls -l
你应该看到类似的东西
-rwxr--r-- 1 youruser youruser 26 Feb 28 21:44 script.sh
-rwxr--r-- 1 youruser youruser 32 Feb 28 21:44 aux1.py
您应该在与文件对应的第 4 列中看到一个"x"。
也许在运行脚本之前键入sudo su
,以便您是 root 用户。脚本完成后,只需键入 exit
即可退出 root。再次键入 exit
以关闭外壳。
:D