![命令可以作为用户使用,但不能作为 sudo 使用?](https://linux22.com/image/860205/%E5%91%BD%E4%BB%A4%E5%8F%AF%E4%BB%A5%E4%BD%9C%E4%B8%BA%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%EF%BC%8C%E4%BD%86%E4%B8%8D%E8%83%BD%E4%BD%9C%E4%B8%BA%20sudo%20%E4%BD%BF%E7%94%A8%EF%BC%9F.png)
我正在构建 gendev(世嘉创世纪开发环境),遇到了一个有趣的问题。
当我尝试通过“sudo make install”安装时,出现错误,提示未找到名为“rescomp”的程序,如下所示:
make[1]: Entering directory `/home/bubo/Genesis-Dev/gendev-read-only/sgdk/sgdk-read-only'
rescomp res/libres.res res/libres.s
make[1]: rescomp: Command not found
make[1]: *** [res/libres.s] Error 127
make[1]: Leaving directory `/home/bubo/Genesis-Dev/gendev-read-only/sgdk/sgdk-read-only'
make: *** [sgdk-read-only/libmd.a] Error 2
但是,如果我恢复为普通用户(不是 root 用户),我可以毫无问题地执行 rescomp 程序。这是环境变量的问题吗?我如何才能让 root 帐户也能使用“rescomp”?
答案1
事实证明,原始“make”仅修改了用户的 PATH 环境变量,而不是 root 的!
我使用以下命令发现了这一点:
printenv
在每个帐户上,然后我注意到不同的路径变量,从那里我通过以根用户身份登录并发出以下命令来修改根路径:
导出 PATH=$PATH:/usr/games:/usr/local/games
其中 /usr/games 和 /usr/local/games 是两个缺失的目录!
答案2
确保以which command
用户身份检查路径指向的位置。
检查该命令路径是否在您的PATH
根目录中。