일반 스크립트는 패키지를 인식하지만 서비스는 인식하지 못합니까?

일반 스크립트는 패키지를 인식하지만 서비스는 인식하지 못합니까?

내 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

쉘에서 직접 시작된 bash 스크립트에서 동일한 명령을 사용하려고 하면 kiex 및 mix 명령이 작동합니다!

서비스를 사용하여 실행하려고 하면 작동하지 않습니다.

어떤 조언이라도 대단히 감사하겠습니다!

답변1

kiex로그인하거나 대화형 쉘을 시작할 때 mix검색 경로(환경 변수)에 추가되는 경로에 설치될 수 있습니다.PATH

서비스는 로그인하지도 않고 대화형 셸을 시작하지도 않으므로 이런 일은 발생하지 않습니다.

kiex따라서 및 의 전체 경로를 지정하십시오 mix.

관련 정보