终端错误:zsh:权限被拒绝:./startup.sh

Posted

技术标签:

【中文标题】终端错误:zsh:权限被拒绝:./startup.sh【英文标题】:Terminal error: zsh: permission denied: ./startup.sh 【发布时间】:2019-04-13 05:30:35 【问题描述】:

我正在运行一个命令 ./startup.sh nginx:start 并收到此错误消息 zsh: permission denied: ./startup.sh 为什么会发生这种情况?

【问题讨论】:

仔细检查您没有尝试执行名为“./startup.sh”的目录。 【参考方案1】:

一定要给它执行权限。

cd ~/the/script/folder

chmod +x ./startup.sh

这将为用户、组和其他人授予 exec 权限,因此请注意可能的安全问题。要将权限限制为单个访问类,您可以使用:

chmod u+x ./startup.sh

这将只授予用户执行权限

For reference

【讨论】:

如果有人对符号链接有这个问题,我刚刚遇到了符号链接具有执行权限的问题,但原始文件没有。可能听起来很明显,但请确保原始文件也具有权限:facepalm: 这样做有安全风险吗? @ScottyBlades 您提出了一个公平的观点,当然,使文件可执行可能会导致安全问题,具体取决于文件中的内容。使用 chmod +x 为用户、组和所有用户提供 exec 权限。如果你想将 exec 权限授予特定的访问类,你可以像 +x 之前的参数一样传递它。例如,要仅向用户授予 exec 权限,您可以执行 chmod u+x ./script.sh 太棒了,谢谢。添加 u 仅将其应用于当前用户。在没有 u 的情况下运行命令后,有什么方法可以应用该限制? u+x 将 exec 权限授予文件所有者,不一定是当前用户。我不知道我是否理解您的要求,但是可以,您可以随时更改文件【参考方案2】:

从 macOS Catalina 开始, 您的 Mac 使用 zsh 作为默认登录 shell 和交互式 shell。您也可以在早期版本的 macOS 中将 zsh 设为默认值。

如何更改默认外壳 无论您的用户帐户配置为使用 zsh(推荐)、bash 还是其他 shell,您都可以从用户和组首选项或命令行更改默认 shell。

    来自用户和组首选项 选择 Apple 菜单  > 系统偏好设置,然后单击用户和组。 点击锁,然后输入您的帐户名和密码。 按住 Control 并单击左侧用户列表中的用户名,然后选择“高级选项”。 从“登录 shell”菜单中选择一个 shell,然后单击“确定”保存更改。

点击链接了解更多详情 - https://support.apple.com/en-in/HT208050

【讨论】:

【参考方案3】:

您也可以使用 bash:

bash startup.sh

那你就不需要执行权限了。

在 MacOS Catalina 中,Apple 已将 bash 替换为 zsh 作为默认 shell。这可能意味着,他们打算在未来移除 bash,所以这可能不是以后的选择,但对于 Catalina,它仍然可以工作。

【讨论】:

以上是关于终端错误:zsh:权限被拒绝:./startup.sh的主要内容,如果未能解决你的问题,请参考以下文章

终端中的权限被拒绝

使用 root 用户的 NPM 安装权限被拒绝错误

无法设置火花笔记本得到没有这样的命令错误和权限被拒绝错误

Collectstatic - 权限被拒绝,pythonanywhere bash 终端

.config/git/ignore':权限被拒绝

在终端中安装 Sublime Text 的命令行工具“subl”,权限被拒绝?