我读过一些帖子,例如是否有放置自定义 Linux 脚本的标准位置?,我应该把我的 bash 脚本放在哪里,但我仍然收到一个错误,即在 bash 中找不到我的脚本。
我已将我的脚本(名为 Wandering_Echo)放入/usr/local/Custom_Programs
并将其符号链接到/bin
、/usr/local/bin
和/usr/local/sbin
,但是当我尝试运行时sudo Wandering_Echo
,我收到此错误:
sarah@LesserArk:/usr/local/Custom_Programs$ sudo Wandering_Echo ?
sudo: Wandering_Echo: command not found
不确定我做错了什么,因为它位于超级用户 bin 目录中。
Wandering_Echo 使用 BTRFS 进行一些低级文件系统操作,因此它需要 root 才能运行。 编辑 0: Wandering_Echo 确实以普通用户身份运行,而不是以终端超级用户身份运行。
编辑1:
sarah@LesserArk:/usr/local/Custom_Programs$ ls -l /usr/local/bin/Wandering_Echo /usr/local/Custom_Programs/Wandering_Echo
lrwxrwxrwx 1 root root 14 Aug 14 15:22 /usr/local/bin/Wandering_Echo -> Wandering_Echo
-rw-r--r-- 1 root root 96 Aug 14 13:09 /usr/local/Custom_Programs/Wandering_Echo
&
sarah@LesserArk:~$ sudo bash -c 'echo $PATH'
[sudo] password for sarah:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
有两个问题:
1.
如果您访问符号链接,其目标值将被视为相对于符号链接的父文件夹的路径(如果以 开头,则为绝对路径
/
)。所以这个符号链接并不指向/usr/local/Custom_Programs/Wandering_Echo
而是指向它自己,这不是很有用。删除它并使用正确创建它。也检查其他符号链接。
2.
正如您在评论中已经写的那样,这里缺少执行标志。利用
使其仅对 root 可执行。替换
u+x
为a+x
使其对所有用户都可执行。