NVM と最新の LTS がインストールされているにもかかわらず、sudo 経由で root として問い合わせると、ノードが古いバージョンを報告するのはなぜですか?

NVM と最新の LTS がインストールされているにもかかわらず、sudo 経由で root として問い合わせると、ノードが古いバージョンを報告するのはなぜですか?

fooユーザー向けに NVM と最新の LTS ノードをインストールする前に:

foo@ubuntu: which node
/usr/bin/node
foo@ubuntu: node --version
v12.22.1

NVM と最新の LTS Node をインストールした後:

foo@ubuntu: which node
/home/foo/.nvm/versions/node/v14.16.1/bin/node
foo@ubuntu: node --version
v14.16.1

では、なぜノードは次のように尋ねても古いバージョンを報告するのでしょうか?sudo 経由で?

root@ubuntu: sudo -u foo which node
/usr/bin/node
root@ubuntu: sudo -u foo node --version
v12.22.1

答え1

これは、root で foo に sudo を実行したときに、foo の PATH が新しいバージョンに取得されないためだと考えています。

これをテストして修正したい場合は

echo $PATH

フーとして

echo $PATH

修正するには、ルートの.bashrcに/home/foo/.nvm/versions/node/v14.16.1/bin/nodeを追加します。

関連情報