我读过一些帖子,例如是否有一个标准的位置来放置自定义 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
存在两个问题:
1.
lrwxrwxrwx 1 root root 14 Aug 14 15:22 /usr/local/bin/Wandering_Echo -> Wandering_Echo
如果您访问符号链接,其目标值将被视为相对于符号链接父文件夹的路径(如果以 开头,则为绝对路径/
)。因此,此符号链接不指向/usr/local/Custom_Programs/Wandering_Echo
,而是指向其自身,这没什么用。删除它并使用
sudo ln -s /usr/local/Custom_Programs/Wandering_Echo /usr/local/bin/Wandering_Echo
正确创建它。检查其他符号链接。
2.
-rw-r--r-- 1 root root 96 Aug 14 13:09 /usr/local/Custom_Programs/Wandering_Echo
正如您在评论中写到的,这里缺少执行标志。使用
sudo chmod u+x /usr/local/Custom_Programs/Wandering_Echo
使其仅对 root 用户可执行。替换u+x
为a+x
使其对所有用户可执行。