我的 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
。