在没有bash的情况下运行时权限被拒绝

时间:2014-02-28 19:22:43

标签: linux bash shell

我有一个调用其他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 +rxuname -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已启用,但我不是管理员,因此无法访问该信息。

2 个答案:

答案 0 :(得分:0)

在启动主脚本之前,您必须确保所有下标都具有正确的权限。特别是您对执行文件的权限(您的文件的用户和所有者)感兴趣。这是一个关于权限的简短教程。 http://blog.pluralsight.com/linux-file-permissions http://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”。

答案 1 :(得分:0)

也许在运行脚本之前键入sudo su,以便您是 root 用户。脚本完成后,只需键入exit即可退出root。再次输入exit以关闭shell。

:D