誰かが魚の殻に環境変数の束を設定する正しい方法は何か教えてもらえますか?
.config/fish/config.fishファイルには、次のように環境変数を設定する機能があります
function setTESTENV
set -x BROKER_IP '10.14.16.216'
set -x USERNAME 'foo'
set -x USERPASS 'bar'
end
コマンドプロンプトsetTESTENV
から入力し、コマンドラインでenv
を実行しても、これらの情報は表示されません。
宣言している変数は、関数内のローカルスコープに保持されます。
つかいます:
set -g -x
ここで、「g
」はグローバル用です。
現在のコンピューター上のすべての現在のユーザーfishインスタンス間で変数を共有する必要があり、シェルの再起動後も保持される場合、-U
または--universal
を使用する必要があります。
set -Ux FOO bar
-g
または--global
でset
を使用すると、シェルインスタンス間で変数が永続的に設定されません。
@JosEduSolの答えは正しくなく、OPの問題の解決に役立ちますが、-g
はスコープをグローバルに設定するだけですが、-x
は指定された環境変数を発生させます。子プロセスにエクスポートされます。
上記が失敗する理由は、@ cfpeteが関数内でenv変数を設定しており、デフォルトのスコープがその関数に対してローカルになるためです。
別のオプションは、実行することです:
export (cat env_file.txt |xargs -L 1)
env_file.txtにはVAR=VALUE
形式の行が含まれます
これには、変数を他のシェルやツールでサポートされている形式で保持するという利点があります