linux - 没有 bash 运行时权限被拒绝

标签 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 已启用,但我不是管理员,因此无法访问该信息。

最佳答案

在启动主脚本之前,您必须确保所有子脚本都已获得正确的权限。您尤其对您(您的用户和文件所有者)执行文件的权限感兴趣。这是关于权限的简短教程。 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

您应该在第四列中看到与该文件对应的“x”。

关于linux - 没有 bash 运行时权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22104064/

相关文章:

c - 使用 write 函数将 double 写入标准输出

bash - 找出 Google Cloud SDK 的安装位置

linux - 如何检查bash命令是否在后台运行?

bash - 如何使用 cut 为变量赋值?

linux - 禁用内核跟踪器

linux - 绕过 bash 中的退出代码

python - linux下如何获取所有进程信息?

bash - 解析 VCF 文件的 INFO 字段

bash - 执行后续命令/脚本,在当前命令/脚本之后是 ^C

Ruby:捕获 system() 的输出并在终端中打印