Ubuntuマシン(10.04)で(ブート時に)いくつかの環境変数を設定したいのですが、次のようにスクリプトを使用して値を作成したいと思います。
export THE_ENV_VAR=$(script_to_execute_and_use_stdout_from)
/etc/environment
で設定しようとしましたが、rhsをそのままコピーするだけです
起動時に/etc/init.d/
でスクリプトを実行しようとしましたが、うまくいかないようです。
アイデア?
~/.bash_profile
または~/.bashrc
に入れてください
gedit ~/.bashrc
これらの変数を非対話型シェル(スクリプト)で使用する必要がある場合は.bash_profileを使用し、シェルで変数を設定する場合は〜/ .bashrcを使用します。
それがうまくいかない場合は、さらに詳細、特にどの変数を設定し、どのような目的のために必要ですか?
これはおそらく良い方法ではありませんが、環境変数をカーネルパラメーターとして指定できます。 Linuxカーネル ドキュメント には、いくつかの適切な情報があります(太字の重要な段落):
引数リスト
カーネルコマンドラインは、スペースで区切られた文字列(ブート引数)のリストに解析されます。ほとんどのブート引数の形式は次のとおりです。
name[=value_1][,value_2]...[,value_10]
ここで、「名前」は、関連する値(存在する場合)がカーネルのどの部分に与えられるかを識別するために使用される一意のキーワードです。現在のコードはキーワードごとに10個のコンマ区切りのパラメーターのみを処理するため、10の制限が実際にあることに注意してください。 (ただし、セットアップ関数がサポートしていると仮定すると、非常に複雑な状況では、最大10個のパラメーターを追加して同じキーワードを再利用できます。)
ほとんどのソートは、カーネルソースファイルinit/main.cにコーディングされています。まず、カーネルは引数が特別な引数「root =」、「nfsroot =」、「nfsaddrs =」、「ro」、「rw」、「debug」または「init」のいずれかであるかどうかを確認します。これらの特別な引数の意味を以下に説明します。
次に、セットアップ関数のリストを調べて、指定された引数文字列(「foo」など)が特定のデバイスまたはカーネルの一部のセットアップ関数(「foo_setup()」)に関連付けられているかどうかを確認します。カーネルにfoo = 3,4,5,6という行を渡した場合、カーネルはbootsetups配列を検索して、「foo」が登録されているかどうかを確認します。もしそうなら、 'foo'(foo_setup())に関連付けられたセットアップ関数を呼び出し、カーネルコマンドラインで指定された引数3、4、5、6を渡します。
上記のようにセットアップ関数として受け入れられない「foo = bar」形式のすべては、設定される環境変数として解釈されます。
(役に立たない?)例は、ブート引数として「TERM = vt100」を使用することです。カーネルによって取得されず、環境変数として解釈されなかった残りの引数は、PID 1(通常はinit(1)プログラム)に渡されます。 initプロセスに渡される最も一般的な引数は、シングルユーザーモードでコンピューターを起動し、すべての通常のデーモンを起動しないように指示するWord 'single'です。システムにインストールされているinit(1)のバージョンのマニュアルページを調べて、受け入れられる引数を確認してください。
これ AskUbuntuの回答には、カーネルブートパラメーターの変更方法に関する適切な指示があります。
ブート時に使用可能なシステム全体の環境変数を設定するには、/etc/environment
に配置します。このファイルはスクリプトファイルではなく、1行に1つずつ割り当て式で構成されています。このような:
SYSTEM_FOO=barnone
注:/ etc/environmentでは変数の展開は機能しません。
help.ubuntu.com からの元の情報