甚至不能以root身份执行bash脚本?

时间:2011-11-11 14:19:20

标签: linux bash centos

我有一个奇怪的问题,我不能执行bash脚本,即使是基本的:

#!/bin/bash
echo "me"

我将它保存为test.sh然后执行chmod 755 test.sh并运行./test.sh获取:

bash: ./test.sh: Permission denied

任何想法?

欢呼声

9 个答案:

答案 0 :(得分:19)

如果您使用“noexec”选项挂载文件系统,则会发生这种情况。你应该删除它。

答案 1 :(得分:7)

脚本需要可执行。使用此:

chmod +x <script-name>

答案 2 :(得分:2)

虽然与这个特定的线程没有直接关系;如果文件来自Windows系统,则该行末尾可能有CR / LF。这会影响文件中的所有行,包括初始执行行,如果您正在查看文件,则不会显示。

$ ./test.sh 
-bash: ./test.sh: /bin/bash^M: bad interpreter: No such file or directory

要看到这个,你可以cat -A文件:     $ cat -A ./test.sh     #!/斌/庆典^ M $     回声“我”^ M $

要删除,请使用dos2unix。

答案 3 :(得分:1)

尝试

  

ls -la

查看文件的实际权限和所有权。查看chmod命令是否确实有效。您可能希望更改所有权以及文件检查的模式:http://www.tuxfiles.org/linuxhelp/fileowner.html

答案 4 :(得分:1)

使用chmod +x ./test.sh 这应该允许你运行它。

答案 5 :(得分:1)

在macOS中,如果存在com.apple.quarantine标志,则可能发生这种情况。如果在脚本路径上运行ls -l后在权限后看到@后缀,请执行ls -l@ *script_path*进行确认。然后运行xattred -d com.apple.quarantine *script_path*删除隔离标志。

答案 6 :(得分:0)

另外,检查包含脚本的目录/文件系统是否已安装nfs。 root不会从nfs挂载的位置运行脚本。

答案 7 :(得分:0)

当您在该文件的目录中时,需要使用./test.sh,如果您没有,请尝试PATH TO THE SCRIPT。或者您可以将其复制到/data的某个目录中chmod for shell,然后执行上面的steeps.if你仍然失败,它没关系,因为我有同样的问题,我只是一次成功。

答案 8 :(得分:-1)

对于默认使用 noexec 挂载的文件系统,例如 NFS,显式添加 exec 在末尾 有帮助,即使列表中前面提供的选项默认也暗示noexec,例如user 选项。

因此,如果您有以下选择之一:

  • noexec
  • user

将它们更改为:

  • exec
  • user,exec

exec 放在最后很重要。如果您之前使用其他选项(例如 noexec),在某些情况下,仅删除 user 可能会有所帮助,但并非全部。