要执行随机 shell 脚本(例如,script.sh
仅包含一行)echo 'foo'
,我可以使用zsh script.sh
,并且这样可以正常工作。但是,如果我尝试使用点语法(即)执行同一文件,则会./script.sh
出现错误:zsh: permission denied: ./script.sh
,即使我#!/bin/zsh
在文件的最开头添加了。这是为什么?
要执行随机 shell 脚本(例如,script.sh
仅包含一行)echo 'foo'
,我可以使用zsh script.sh
,并且这样可以正常工作。但是,如果我尝试使用点语法(即)执行同一文件,则会./script.sh
出现错误:zsh: permission denied: ./script.sh
,即使我#!/bin/zsh
在文件的最开头添加了。这是为什么?
这与预期一致!默认情况下,您的文件
script.sh
不可执行。您可以使用以下命令更正此问题:然后运行
./script.sh
就可以了。(你可以用 将其改回来chmod -x ./script.sh
。)#!/bin/zsh
文件顶部的行是一个shebang。它说“当我执行此文件时,使用 zsh 读取它”,但它仍然不允许执行该文件。