Mac 10.11.6でGNU bashバージョン3.2.57(1)-release(x86_64-apple-darwin15)を使用すると、このset +a
コマンドは機能しないようです。
script.py
#!/usr/bin/python
import os
print("VAR0 is:", os.environ.get("VAR0")
注文する:
$ VAR0=abc
$ ./script.py
('VAR0 is:', None) # expected
$ set -a
$ VAR0=abc
$ ./script.py
('VAR0 is:', 'abc') # expected, VAR0 has been exported to the environment and script.py has access to it
$ set +a
$ VAR0=def
$ ./script.py
('VAR0 is:', 'def') # <= unexpected
ベストアンサー1
あなたはそれが何であるかset -a
誤解しました。変数をエクスポートすると、変数に対する変更は常に環境に反映されます。 (これはの歴史的実装では常に真ではありませんでしたが、sh
すべての最新のPOSIX互換シェルではそうです。)この-a
オプションは、変数が以前にエクスポートされていなくても強制的にエクスポートすることを可能にします。デフォルトでは、割り当てはシェル変数を生成します。しかし、-a
実際に割り当てると、変数がまだエクスポートされていない場合でも変数がエクスポートされます。
set +a
この-a
オプションの設定を解除してください。エクスポートした変数の値を変更すると、環境(-a
有効)に影響します。