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

Rea*_*ing 4 macos terminal nginx sh

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

Gef*_*ish 15

或者,您可以使用 bash:

bash startup.sh
Run Code Online (Sandbox Code Playgroud)

那么你不需要执行权限。

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

  • 为什么 bash 在没有执行权限的情况下可以工作,而 zsh 却不能? (4认同)

And*_*lin 13

确保授予它执行权限。

cd ~/the/script/folder

chmod +x ./startup.sh
Run Code Online (Sandbox Code Playgroud)

  • 如果有人遇到符号链接问题,我刚刚遇到了一个问题,即符号链接具有执行权限,但原始文件没有。可能听起来很明显,但请确保原始文件也具有权限:facepalm: (2认同)
  • @ScottyBlades,您提出了一个公平的观点,当然,使文件可执行可能会导致安全问题,具体取决于文件内的内容。使用 chmod +x 为用户、组和所有人授予 exec 权限。如果要授予特定访问类的exec权限,可以在+x之前像参数一样传递。例如,要仅向用户授予 exec 权限,您可以执行 chmod u+x ./script.sh (2认同)

小智 6

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

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

  1. 从用户和组首选项
  2. 选择苹果菜单?> 系统偏好设置,然后单击用户和组。
  3. 单击锁 ,然后输入您的帐户名和密码。
  4. 按住 Control 键点按左侧用户列表中的用户名,然后选取“高级选项”。
  5. 从“登录外壳”菜单中选择一个外壳,然后单击“确定”以保存更改。

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