すべての環境変数をファイルに保存

すべての環境変数をファイルに保存

環境変数を含む単一のファイルを使用するときに考慮すべきことは何ですか?

私が望むのは、必要な~/.envすべての宣言やPATHその他の非機密環境変数を含むファイル(たとえば)を生成することです。そのファイルは、各シェルごとのドットファイルに由来します。EDITORGOPATH

特に、次の行を含めたいです。

    . "$HOME/.env"

すべて ,,,,,,.profile.bash_profile.bashrc.zprofile.zshenv.zshrc

目標は、対話型/非対話型およびログイン/非ログインシェルで実行されるコマンドの一貫した動作です。

私はなぜこれをしたくないのですか?その結果、問題が発生しますか?


SEでは、このトピックに関する多くの回答を読んでいます。

https://superuser.com/a/187673/924981
https://askubuntu.com/a/540689
https://askubuntu.com/a/866240
https://stackoverflow.com/q/14637979/3885799

env宣言のいくつかの推奨事例を理解します。しかし、上記の方法も許容可能で安全であるかどうかを知りたいです。

ベストアンサー1

唯一の問題は、からファイルをインポートし、これらの2つが互いにファイルをインポートする場合(他のシェルでも同様)、シェルセッションを開始すると環境ファイルを複数回(2回)取得できること.bash_profileです.bashrc

そうでなければ、これは問題ではありません追加/プレフィックス環境変数の値です。

env_sourcedシェル変数(ファイルの一部の値など)を設定し、一番上でテストしてこれを防ぐことができます。

# My environment file

[ -n "$env_sourced" ] && return
env_sourced=1

PATH="$PATH:/some/path"
# etc.

おすすめ記事