在我的主文件夹中有一个名为foo.sh的脚本。
当我导航到这个文件夹,并输入./foo.sh时,我得到
-bash: ./foo.sh:拒绝访问。
当我使用sudo ./foo.sh时,我得到
Sudo: foo.sh:命令未找到。
为什么会发生这种情况,我该如何解决?
在我的主文件夹中有一个名为foo.sh的脚本。
当我导航到这个文件夹,并输入./foo.sh时,我得到
-bash: ./foo.sh:拒绝访问。
当我使用sudo ./foo.sh时,我得到
Sudo: foo.sh:命令未找到。
为什么会发生这种情况,我该如何解决?
当前回答
关于使用sudo时“命令未找到”,更少的黑客方式是编辑secure_path。
这里描述得很完美: https://superuser.com/questions/927512/how-to-set-path-for-sudo-commands
其他回答
检查sudo上的secure_path
[root@host ~]# sudo -V | grep 'Value to override'
Value to override user's $PATH with: /sbin:/bin:/usr/sbin:/usr/bin
如果$PATH正在被覆盖,使用visudo并编辑/etc/sudoers
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
您还可以在超级用户PATH中的某个目录(例如/usr/local/bin)中创建到脚本的软链接。然后sudo就可以使用它了。
chmod +x foo.sh
sudo ln -s path-to-foo.sh /usr/local/bin/foo
看看这个答案,有一个想法,把软链接在哪个目录。
检查您是否拥有脚本的执行权限。即chmod +x foo.sh 检查脚本的第一行是否为#!/bin/sh之类的。 对于sudo,您在错误的目录。与sudo PWD确认
关于使用sudo时“命令未找到”,更少的黑客方式是编辑secure_path。
这里描述得很完美: https://superuser.com/questions/927512/how-to-set-path-for-sudo-commands
如果上面的指南有问题,请尝试chmod u+x foo.sh,而不是chmod +x foo.sh。当其他的解都没有的时候,这个对我有用。