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 所建议的:
我有一个运行 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 所建议的: