내 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
.