Shell 脚本在 npm install 上抛出 /usr/bin/env: 'node'

Shell 脚本在 npm install 上抛出 /usr/bin/env: 'node'

尽管阅读了很多有关此问题的线程,但我似乎无法弄清楚这一点。

总结一下问题

从 shell 脚本登录到远程服务器,拉取 git 存储库并尝试使用 Node 的绝对路径运行“npm install”,我得到“/usr/bin/env: 'node': No such file or directory”

提供详细信息和任何研究

我已经用 NVM 安装了 Node。在远程服务器上运行“哪个节点”时,我得到以下路径“/root/.nvm/versions/node/v12.16.2/bin/node”。我使用 SSH 密钥以 root 身份登录到远程服务器。

我的 shell 脚本如下所示:

#!/bin/sh
ssh root@my-ip -p my-port<<EOF
cd projectDir/my-project
git pull origin master
~/.nvm/versions/node/v12.16.2/bin/npm install
pm2 restart all
exit
EOF

运行 shell 脚本时,我得到以下输出:

mesg: ttyname failed: Inappropriate ioctl for device
From git+ssh://github.com/xxxx/my-project
 * branch            master     -> FETCH_HEAD
Already up to date.
/usr/bin/env: ‘node’: No such file or directory
-bash: line 4: pm2: command not found

NVM 版本:0.35.3 节点版本:v12.16.2

在适当的时候,描述你已经尝试过的事情

我尝试了不同的节点版本路径,但得到了相同的结果。当以用户身份通过​​ SSH 而不是通过 shell 脚本登录到远程服务器并运行“~/.nvm/versions/node/v12.16.2/bin/npm install”时,它就像一个魅力。

答案1

找到了解决方案。我需要添加“source ~/.nvm/nvm.sh;”在运行我的 npm 命令之前。

要获得更详细的答案,请查看我找到解决方案的线程:https://unix.stackexchange.com/a/425819/411880

相关内容