报错 bash: ./program_name: permission denied

在 Linux 终端上运行代码时,可能会遇到“bash:./program_name:permission denied”,简而言之,就是权限被拒绝错误。

本教程解释了 Permission denied 错误,出现此类错误的原因,以及如何修复 Linux 中的 shell script 权限被拒绝错误。 教程出处.

Linux中的Shell脚本权限被拒绝错误是什么?
当尝试运行的 shell 脚本没有执行权限时,会出现 shell 脚本权限被拒绝错误。 Linux 通过在你的 Linux 终端上显示 bash: ./program_name: permission denied 来告诉你这个问题。

Linux 和其他此类操作系统非常关注其安全性。只有具有“Sudo”权限或“root”的用户才能完全访问所有文件和目录以进行必要的更改。它不允许普通用户进行更改。因此,脚本的执行停止。

Linux 中的 Permission Denied 错误示例
现在,让我们考虑下面给出的这个例子。

./samplescript.sh

在上面的示例中,“samplescript.sh”是一个 shell 脚本。我们试图执行这个 shell 脚本。

bash: ./program_name: permission denied

这是 Linux 返回的脚本执行输出。它显示用户无法执行脚本,因为存在“权限被拒绝错误”。


解决 Linux 中的权限被拒绝的报错


要修复 Linux 中的权限被拒绝错误,需要更改脚本的文件权限。为此,需使用“chmod”(更改模式)命令。但在此之前,需要检查文件权限。

要检查文件权限,请运行以下命令。

ls -l samplescript.sh

现在,我们将讨论使用“chmod”的解决方案。

“chmod”命令的作用
“chmod”命令允许普通用户在数字、参考文件或符号模式的帮助下更改文件权限。

chmod 的语法是:

chmod flags permissions filename

chmod 命令由三个部分组成,例如:

  • flags ,用户设置的附加选项
  • permissions ,此段定义由符号或八进制数字表示的文件权限。

例如,chmod u=rwx,g=r,o=r file

在上面的示例中,“x”赋予执行权限,“w”用于写入,“r”赋予读取权限。

  • filename - 指定需要更改权限的文件的名称。

现在,让我们使用以下命令更改文件“samplescript.sh”的权限。

方法一

输入下面的命令:
chmod u+x samplescript.sh

在上面的命令中,“u+x”使文件所有者可以执行 shell 脚本。此 chmod 命令执行将“samplescript.sh”转换为所需的可执行格式。访问模式更改为执行(“x”表示执行)。

方法二

这是授予文件权限的另一种方式。因此,输入以下命令。

sudo chmod +x samplescript.sh

在这里, chmod 命令授予所有人执行权限,因为没有指定引用。

Chmod references 包括:

  • g - 来自文件组的用户
  • u - 文件的所有者
  • a - 每个用户
  • o - 用户既不是文件所有者也不是文件组的成员

最后的步骤
之后,执行以下命令:

ls -l samplescript.sh

上面的“ls”命令通过shell脚本的权限确认所做的修改。然后,使用以下命令。

cat samplescript.sh

这个“cat”命令使您能够查看脚本文件的内容。

最后,您可以使用 shell 脚本执行。因此,在您的 Linux 终端中键入以下命令。

./samplescript.sh

如果您的脚本运行,那么恭喜!您已成功修复 shell 脚本权限被拒绝错误。

结论
简单来说,就是将这个对你来说不可执行的.sh文件,通过chmod改为可执行文件,这样就可以用 ./.sh 来执行啦~

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在终端执行sh文件时出现"-bash: ./ata: Permission denied"错误,这是由于没有执行权限导致的。要解决这个问题,你需要使用chmod命令为该文件添加执行权限。可以按照以下步骤进行操作: 1. 打开终端并导航到文件所在的目录。 2. 使用chmod命令为文件添加执行权限,命令格式为:chmod +x 文件名。 例如,如果文件名为ata.sh,命令应为:chmod +x ata.sh。 3. 再次尝试执行该文件,应该不再出现"-bash: ./ata: Permission denied"错误。 此外,如果在执行时还出现了"-bash: /Users/XXX/Test.sh: /bin/sh^M: bad interpreter: No such file or directory"错误,这可能是由于文件格式不正确导致的。在Windows和Linux之间传输文件时,可能会发生换行符格式的差异。您可以使用dos2unix命令将文件转换为正确的格式。以下是操作步骤: 1. 在终端中导航到文件所在的目录。 2. 使用dos2unix命令将文件转换为正确的格式,命令格式为:dos2unix 文件名。 例如,如果文件名为ata.sh,命令应为:dos2unix ata.sh。 3. 然后,尝试再次执行该文件,应该不再出现"-bash: /Users/XXX/Test.sh: /bin/sh^M: bad interpreter: No such file or directory"错误。 希望这些解决方法能帮到你!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [-bash: Permission denied及/bin/sh^M: bad interpreter: No such file or directory问题解决](https://blog.csdn.net/zhuangmszhuangms/article/details/82659580)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Linux bash:./xxx:无法执行二进制文件报错](https://download.csdn.net/download/weixin_38654315/14888948)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值