在我的主文件夹中有一个名为foo.sh的脚本。

当我导航到这个文件夹,并输入./foo.sh时,我得到

-bash: ./foo.sh:拒绝访问。

当我使用sudo ./foo.sh时,我得到

Sudo: foo.sh:命令未找到。

为什么会发生这种情况,我该如何解决?


当前回答

如果你对命令行不太熟悉,并且正在使用Ubuntu,你可以用下面的方法解决这个问题:

打开文件所在的文件夹窗口 右键单击可执行文件并选择Properties 转到权限选项卡,并突出显示允许执行文件作为程序

使用这种解决方案,您允许用户将文件作为程序执行,而不需要sudo(或更改root的PATH环境变量)。

其他回答

如果你对命令行不太熟悉,并且正在使用Ubuntu,你可以用下面的方法解决这个问题:

打开文件所在的文件夹窗口 右键单击可执行文件并选择Properties 转到权限选项卡,并突出显示允许执行文件作为程序

使用这种解决方案,您允许用户将文件作为程序执行,而不需要sudo(或更改root的PATH环境变量)。

如果上面的指南有问题,请尝试chmod u+x foo.sh,而不是chmod +x foo.sh。当其他的解都没有的时候,这个对我有用。

关于使用sudo时“命令未找到”,更少的黑客方式是编辑secure_path。

这里描述得很完美: https://superuser.com/questions/927512/how-to-set-path-for-sudo-commands

It seems sudo command not found

输入sudo,按“Enter”,查看是否安装了sudo软件包。如果你安装了sudo,系统将显示一个简短的帮助消息,否则你将看到类似sudo: command not found的东西

安装sudo时,以root帐号执行如下命令:

如果您的系统基于apt包管理器

如果您的系统基于yum包管理器

检查您是否拥有脚本的执行权限。即chmod +x foo.sh 检查脚本的第一行是否为#!/bin/sh之类的。 对于sudo,您在错误的目录。与sudo PWD确认