终端错误: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的主要内容,如果未能解决你的问题,请参考以下文章