スクリプトを使用して起動時にグローバル環境変数を設定し、ログイン前に実行されているアプリケーションでそれを使用できるようにするにはどうすればよいですか。

スクリプトを使用して起動時にグローバル環境変数を設定し、ログイン前に実行されているアプリケーションでそれを使用できるようにするにはどうすればよいですか。

起動時に実行されるサービスがあり、サービスからバックグラウンドでいくつかの環境変数をエクスポートするbashスクリプトを呼び出します。私が経験している問題は、これらの環境変数がバックグラウンドプロセスの親プロセスに転送されないため、スクリプトの実行が終了すると消えることです。

また、スクリプトが実行された後、サービスは別のスクリプトを呼び出して、私が持っているアプリケーションを起動します。アプリケーションはこれらの環境変数にアクセスする必要があります。

私が実行しているRHELシステムは、ユーザーがログインしたことがなく、起動してアプリケーションを実行するだけです。親プロセス/シェルの環境変数は使用できないことがわかります。本物ただし、サブバックグラウンドプロセスシェルで設定できます。

私のサービスに追加したり(私には機能しません)、それを追加するのではなく、私のサービスから呼び出されたスクリプトを介して(バックグラウンドでは必ずしもそうではありませんが)、これを行う方法が必要です/etc/environment.profile

私のサービスで環境変数を追加してみました(しかしそれは私が望むものではありません)。

    export TEST=192.168.1.1

私も私のサービスでこれを試しました。

    TEST=192.168.1.1
    export TEST=${TEST}

私のサービスがbashスクリプトを呼び出す方法を変更してみました。

    /bin/asdf/script &

また、同じシェルで実行するスクリプトをインポートしようとしました。これ):

    . ./bin/asdf/script
    #I'm very confused why this didn't work

私も見つけました。これこれは面白かったですが、私の場合は実際には動作しませんでした。

ベストアンサー1

変数を収集するスクリプトを配置してみることができます。/etc/profile.d/

例:

/etc/profile.d/somescript.sh

#!/bin/bash
TEST=$(cat /var/somefile)
export $TEST

/etc/profileExecute はすべてのスクリプトへの呼び出しを実行します。/etc/profile.d/これは、ルートを含むシステム内のすべてのユーザーに適用されます。

おすすめ記事