![일반 스크립트는 패키지를 인식하지만 서비스는 인식하지 못합니까?](https://linux55.com/image/223292/%EC%9D%BC%EB%B0%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94%20%ED%8C%A8%ED%82%A4%EC%A7%80%EB%A5%BC%20%EC%9D%B8%EC%8B%9D%ED%95%98%EC%A7%80%EB%A7%8C%20%EC%84%9C%EB%B9%84%EC%8A%A4%EB%8A%94%20%EC%9D%B8%EC%8B%9D%ED%95%98%EC%A7%80%20%EB%AA%BB%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
내 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
.