ExecStart
で$HOME
環境変数を使用しようとしています。 $HOME
や${HOME}
など、さまざまなことを試しましたが、何も機能していないようです
ExecStart=${HOME}/bin/some-binary
誰もがこれの正しい形式を知っていますか?
これはあなたが探しているものだと思います: https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Specifiers 。
具体的には、%h
は、現在のユーザーのホームディレクトリに展開する必要があります。
User=foo
を期待どおりに機能させるには、サービスファイルでこの${HOME}
をユーザーに定義する必要があります。
ユーザーを設定しない場合、$HOME
は、コマンドの起動に使用されるデフォルトユーザーのホームディレクトリに展開されるため、$HOME
、つまりバイナリと一致しません。
別の解決策は、バイナリの絶対パスを使用することです。
サポートされる変数(「指定子」と呼ばれます)の完全なリストは次のとおりです: https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Specifiers 。
サービスを実行するユーザーのホームディレクトリ(User=
で指定されたもの)の指定子はありません。サービスマネージャを実行しているユーザーには1つしかありません。
リンクから:
%h
はサービスマネージャを実行しているユーザーインスタンスのホームディレクトリです。システムマネージャの場合、これは「/root
」に解決されます。この設定はnotサービスユニットの[Service]セクションで構成可能なUser=
設定の影響を受けることに注意してください。