web-dev-qa-db-ja.com

魚の殻で環境変数を設定する方法

誰かが魚の殻に環境変数の束を設定する正しい方法は何か教えてもらえますか?

.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を実行しても、これらの情報は表示されません。

73
cfpete

宣言している変数は、関数内のローカルスコープに保持されます。

つかいます:

set -g -x

ここで、「g」はグローバル用です。

59
JosEduSol

niversal Variables を使用します

現在のコンピューター上のすべての現在のユーザーfishインスタンス間で変数を共有する必要があり、シェルの再起動後も保持される場合-Uまたは--universalを使用する必要があります。

set -Ux FOO bar

-gまたは--globalsetを使用すると、シェルインスタンス間で変数が永続的に設定されません。

106
Paolo Moretti

魚の環境変数

@JosEduSolの答えは正しくなく、OPの問題の解決に役立ちますが、-gはスコープをグローバルに設定するだけですが、-xは指定された環境変数を発生させます。子プロセスにエクスポートされます。

上記が失敗する理由は、@ cfpeteが関数内でenv変数を設定しており、デフォルトのスコープがその関数に対してローカルになるためです。

9
Jorge Bucaran

別のオプションは、実行することです:

export (cat env_file.txt |xargs -L 1)

env_file.txtにはVAR=VALUE形式の行が含まれます

これには、変数を他のシェルやツールでサポートされている形式で保持するという利点があります

7
Ophir Yoktan