正常脚本可以识别包,但服务不能识别包?

正常脚本可以识别包,但服务不能识别包?

我的 bash 脚本:

#!/bin/bash
. ~/er/erl/activate
kiex use 1.13.4
mix phx.server

我使用 kerl 和 kiex 来管理我的 erlang 和 elixir 安装

我正在尝试在我的服务中使用这个脚本;

 [Unit]
Description=BlockScout Server
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=ubuntu
StandardOutput=syslog
StandardError=syslog
WorkingDirectory=/usr/local/blockscout
ExecStart=/usr/local/bin/startBlockscout.sh
EnvironmentFile=/usr/local/blockscout/env_vars.env

[Install]
WantedBy=multi-user.target

如您所见,startBlockscout.sh 是我的 bash 脚本的名称。我打算将此脚本作为 Linux 服务中 Execstart 字段的一部分运行

我想知道,如何确保我的脚本在服务中运行时能够识别 kerl 和 kiez

我不断收到错误;

line 3: kiex: command not found
line 4: mix: command not found

如果我尝试在直接从 shell 启动的 bash 脚本中使用相同的命令,那么 kiex 和 mix 的命令就可以工作!

当我尝试使用该服务执行它们时它们不起作用

任何意见是极大的赞赏 !

答案1

kiex并且可能安装到您登录或启动交互式 shell 时mix添加到搜索路径(环境变量)的路径中。PATH

由于该服务既不会让您登录,也不会启动交互式 shell,因此不会发生这种情况。

kiex因此,只需指定和 的完整路径即可mix

相关内容