3
3
I have a problem.
Lately I've installed nodejs
(if you don't know what it is, it does not really matter, could be anything else) from sources to /opt/node:
$ ls -la /opt
...
lrwxrwxrwx 1 root root 11 2012-07-25 13:48 node -> node-0.6.3/
drwxr-xr-x 6 root root 4096 2012-07-25 13:48 node-0.6.3
...
so, the binaries are in /opt/node/bin
:
$ ls -la /opt/node/bin
...
lrwxrwxrwx 1 root root 38 2012-06-20 11:44 npm -> ../lib/node_modules/npm/bin/npm-cli.js
...
As you can see, npm
is there.
To make it easier to use it from a command line I fixed $PATH
inside .bashrc
script:
HOME=$HOME:...:/opt/node/bin
and so did to the root's .bashrc
:
# which npm
/opt/node/bin/npm
But if I run npm with sudo, npm
is not found:
$ sudo which npm
$ sudo npm -g install uglify-js
sudo: npm: command not found
So, why is it happening? How do I gain what I want?
Thanks.
UPDATE: Following Paul's advice, I've added
Defaults env_keep = PATH
to the /etc/sudoers
but the problem persists anyway:
$ echo $PATH
... :/opt/node/bin
$ sudo su -
#
# sudo -V
...
Environment variables to preserve:
XAUTHORIZATION
XAUTHORITY
TZ
PS2
PS1
PATH
...
So, Defaults
directive did it's job, but I'm getting the same sudo: npm: command not found
It did. Why you think it didn't ? – Nemoden – 2014-06-22T06:00:52.510
Related: Why are PATH variables different when running via sudo and su? at Unix SE
– kenorb – 2015-12-24T18:03:44.183So you marked an answer as accepted, but it did not fix your problem? – T.W.R. Cole – 2014-06-16T19:23:34.917