2011-08-27 144 views
0

我需要使用sudo访问在我的Ubuntu机器上运行节点。节点的目录在sudo路径中,但是当试图运行它时,我得到一个未找到的命令。我可以明确地调用哪个工作的节点。Sudo路径 - 找不到Node.js

//works 
node 
> 

which node 
/root/local/node/bin/node 

echo sudo $PATH 
sudo /root/local/node/bin:/usr/bin/node:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games 

sudo node --version 
sudo: node: command not found 

//explicitly calling it works 
sudo node /root/local/node/bin 
> 
+1

您的最后一条命令是在/ root/local/node中执行名为“bin”的程序。如果这样做,你的第一个''哪里'说谎。 – geoffspear

+0

@Wooble实际上,显式调用应该到/ root/local/node/bin/node目前为止,我可以从不同版本的节点安装中猜测。贝克的最后一个命令是不完整的。 PATH手动添加,它在结尾处遗漏/节点。从源构建时,/ node/bin总是目录。 – moonstruck

回答

2

嗯,我不认为有这样的事,作为一个“命令路径” - 你的第二个命令只是有呼应“命令”,然后你的正常路径。无论如何,如果你正在运行sudo,那么你确实应该根据路径确定而不是--为了最大限度地降低安全风险,您应该尽可能为每个命令和文件参数提供显式路径名。如果sudo不想运行某些内容,则需要使用visudo将其添加到/etc/sudoers

+0

那些低调的护理人员能够启发我什么我错了吗? –