/etc/environment.confの正確な構文を知りたいです。私はこれが一般的なシェルスクリプトではないことを知っていますが、一重引用符と二重引用符は正確にどのように処理されますか?
ファイルの前半で定義された環境変数を使用して、後で変数を定義できますか?
脱出はどのように行われますか?値にスペースがある場合はどうなりますか?
また - ファイルはいつ処理されますか?オンラインで矛盾する情報は、システムの起動時に、ユーザーがログインするたびに、またはその両方で処理されると言います。
オンラインでこれらの詳細が見つかりません。誰かが私に権威ある文書を教えてもらえますか?
重要な場合は、特にUbuntu(Debian)に興味があります。
ベストアンサー1
奇妙です、私は以前これをテストしたことがあります。この行動はちょっと…変です。
これらの設定は次の場所にあります/etc/environment
。
FOO1=bar
FOO2="bar"
FOO3="bar
FOO4=bar"
FOO5='bar'
FOO6='bar"
export FOO7=bar
FOO8=bar bar bar
#FOO9=bar
FOO10=$PATH
FOO11="foo#bar"
次の環境変数が与えられた場合:
FOO1=bar
FOO2=bar
FOO3=bar
FOO4=bar"
FOO5=bar
FOO6=bar
FOO7=bar
FOO8=bar bar bar
FOO10=$PATH
FOO11=foo
言い換えれば:
- 先行をスキップします
export
(7)。 - 値が一重引用符または二重引用符で始まる場合、値と末尾の一重引用符または二重引用符は削除されます。 (2、5)
- ...しかし、引用符が一致しないか、引用符が欠落してもかまいません(3、6)。
- 引用符がなくてもスペースを特に処理しません。 (8)
- ...ここに表示するのが難しい末尾のスペースはありませんが、テストしました(8)。
#
(9) で始まる行は無視されます。#
...そして引用符の間にあっても、aで行を切り取ります。 (11)- 変数拡張をサポートしていません(10)
で読んpam_env.so
だのでログインしたいです。pam_env
マンページまたはenvironment
マニュアルページしかし、引用符の処理については言及しません。テストに加えて、コードの動作を解析する必要があります。ラスケスの答え次に接続。
私はシェルの起動ファイルに入れた割り当てを受け入れて、両方で同じことをしようとしていると思いますexport FOO="bar bar"
(末尾のスペースがない場合)。ただforの構文がはるかに簡単だということです/etc/environment
(私の考えには愚かなほど)。
/etc/environment
変数拡張などもサポートされていません。前述のように、$PATH
ファイルの値は$PATH
ディレクトリリストではなくテキストで終わります。
上記のマニュアルページにも説明されており、構文が豊富でpam_env.conf
変数の拡張が可能です。しかし、それでもシェル構文ではありません。
関連: