NVM 在从服务 运行 时似乎没有指向正确的用户

NVM doesn't seem to be pointing to the right user when being ran from a service

我有一个运行 shell 脚本的服务,它反过来使用 NVM 将我当前的节点环境设置为 8.16.0。该脚本工作正常,但是当我启动应该执行相同操作的服务时,由于没有 Node 版本 8.16.0 而失败,尽管它已安装在我当前的用户中。关于 NVM 的行为可能会影响到这一点,我可能错过了什么?

我已经尝试将服务中的用户设置为所需用户。

这是服务代码:

[Unit]
Description=script startup service
After=network.target
StartLimitIntervalSec=1

[Service]
Type=simple
Restart=always
RestartSec=1
User=pi
Group=pi
ExecStart=/home/pi/job.sh

[Install]
WantedBy=multi-user.target

这是 job.sh 给我带来麻烦的部分:

#! /bin/sh
. ~/.nvm/nvm.sh

nvm use 8.16.0

我希望它将 nvm 更改为版本 8.16.0,但我收到一条消息说该版本未安装。

通过更改

解决了问题
#! /bin/sh

#! /bin/bash

正如这个 post 所建议的: