我已经在我的GOPATH
中安装了一个二进制文件dep
,路径为/home/me/go/bin
。
运行dep
可以成功执行该二进制文件,但是运行sudo dep
会出现sudo: dep: command not found
的错误:
$ dep
Dep is a tool for managing dependencies for Go projects
Usage: "dep [command]"
...
Use "dep help [command]" for more information about a command.
$ sudo dep
sudo: dep: command not found
路径不是问题的关键:
$ echo $PATH
/usr/share/Modules/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/var/lib/snapd/snap/bin:/home/me/.local/bin:/home/me/bin:/home/me/.local/bin:/home/me/bin:/home/me/go/bin:/home/me/.local/bin:/home/me/bin:/home/me/go/bin
$ sudo echo $PATH
/usr/share/Modules/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/var/lib/snapd/snap/bin:/home/me/.local/bin:/home/me/bin:/home/me/.local/bin:/home/me/bin:/home/me/go/bin:/home/me/.local/bin:/home/me/bin:/home/me/go/bin
这两个路径是相同的,因为 me
和 superuser
都引用了关键目录 /home/me/go/bin
。
为什么在不使用 sudo
的情况下运行 dep
会成功,但使用 sudo
却显示 command not found
?
sudo
命令之前,$PATH
会被扩展;请尝试使用sudo sh -c 'echo "$PATH"'
代替。 - chepner