我有一个奇怪的问题,我不能执行bash脚本,即使是基本的:
#!/bin/bash
echo "me"
我将它保存为test.sh然后执行chmod 755 test.sh并运行./test.sh获取:
bash: ./test.sh: Permission denied
任何想法?
欢呼声
答案 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
在末尾strong> 有帮助,即使列表中前面提供的选项默认也暗示noexec
,例如user
选项。
因此,如果您有以下选择之一:
noexec
user
将它们更改为:
exec
或user,exec
将 exec
放在最后很重要。如果您之前使用其他选项(例如 noexec
),在某些情况下,仅删除 user
可能会有所帮助,但并非全部。