/etc/environmentグローバル構成ファイルではありません。

/etc/environmentグローバル構成ファイルではありません。

サービスを作成しようとしていますsystemd

サービスには、いくつかの環境変数を使用する必要があるスクリプトがあります。

だから私はこれを作りました:

cat /etc/systemd/system/atlantis-server.service 
[Service]
ExecStart=/usr/local/bin/atlantis-server.sh

これは次のことを示しています。

pkara@atlantis-server:~$ cat /usr/local/bin/atlantis-server.sh 
#!/bin/bash
source /etc/environment
atlantis server --atlantis-url="$URL" --gitlab-user="$USERNAME" --gitlab-token="$TOKEN" --gitlab-webhook-secret="$SECRET" --gitlab-hostname="$HOSTNAME" --repo-whitelist="$REPO_WHITELIST"

私は(私のsystemdログにいくつかのエラーが発生した後)明示的にする必要があることがわかりました。source /etc/environment

(ここでは上記の変数が宣言されています。)

これはなぜ必要ですか?

グローバルに表示されませんか?

編集する:これをサービス定義に追加しても問題は解決されませんでした。

Environment=/etc/environment

ベストアンサー1

/etc/environmentグローバル構成ファイルではありません。

適用されますただLinuxでは;ただlogin使用されるようなPAMセッションにただ特定のPAMプラグインがシステムにインストールされて有効になっていて、そのPAMプラグインが他のファイルを使用するように構成されていない場合(/etc/environment特に指定のない限り、これは単なるデフォルトです)。これを読むのはPAMプラグインです。

それ以外の場合は、目的のない無意味なファイルにすぎません/etc

できるsystemd-system.confグローバルに環境変数を設定するみんな変更したいサービスだけでなく、サービスも同様です。

同様にEnvironmentFile、systemdの適切なサービス単位には、環境変数定義のリストを含むパブリックファイルを読み取る方法がありますが、systemdではそのサービス単位を使用しないことをお勧めします。彼らはEnvironmentFileそれが悪い考えだと考え、その使用を間違いと見なします。

すべてのシステムユーザーがこれを行う正しい方法は、Environmentサービスユニットのすべての変数を次の設定に設定することです。実際の環境変数名と値を含みます。ファイル名ではなく設定されます。独自のサービスユニットを作成してここに配置する場合は関連するサービスユニットに直接配置することができ、事前にパッケージ化されたサービスユニットを適用する場合は/etcオーバーレイファイルに配置できます。.conf/lib/usr/lib

追加読書

おすすめ記事