私の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
。