シェル変数のエクスポート(保存)とインポート(ソース)

シェル変数のエクスポート(保存)とインポート(ソース)

環境変数をファイルに保存し、(後で)プロセスからその変数をインポートする必要があります。fooprogを実行する前に環境を無効にするプログラムを解決するには、これが必要barscriptですbarscript。だから実行する前に、すべての環境変数をファイルに保存し、fooprogramファイルbarscriptからインポートする予定です。

これを試しましたが、空白を含む変数がある場合は機能しません。

$ env > my_environment
$ . my_environment

/proc/$$/environ正しい方法はそれを操作して何とか解析するbarscriptことですが、正しい方法を見つけることができません。

編集:引用符や改行文字にも問題があります。問題なく次の問題のある環境変数を取得するにはどうすればよいですか?

PROBLEMATIC='this has double quotes " and single quotes '\'' and even
newlines.

See?'

ベストアンサー1

$ declare -p > my_environment

後で内部barscript:

. my_environment

declare -p必要に応じて変数を引用してエスケープするなど、シェル実行可能ファイル形式で環境変数を出力します。

$ foobar='"some double-quoted text"'
$ echo $foobar 
"some double-quoted text"
$ declare -p foobar
declare -- foobar="\"some double-quoted text\""

しかし、環境全体を出力したくない場合は、これを行う必要はありません。コマンドラインに出力したい変数の名前を指定してくださいdeclare -p

$ declare -p HOME PATH foobar
declare -x HOME="/home/cas"
declare -x PATH="/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11"
declare -- foobar="\"double-quoted-text\""

または、grep -v出力に表示したくない特定の変数をパイプとして除外します。

エクスポートした変数のみをインポートする:

declare -p -x > my_environment

詳細についてはをhelp declare参照してくださいbash

おすすめ記事