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


90

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

.config / fish / config.fishファイルには、次のように環境変数を設定する関数があります。

function setTESTENV
      set -x BROKER_IP '10.14.16.216'
      set -x USERNAME 'foo'
      set -x USERPASS 'bar'
end 

コマンドプロンプトから入力してコマンドラインでsetTESTENVaを実行するenvと、これらの情報が表示されません。

回答:


70

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

使用する:

set -g -x

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


152

ユニバーサル変数を使用する

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

set -Ux FOO bar

シェルインスタンス間で変数を永続的に使用setする-g--global、設定しない


config.fishファイル内のユニバーサル変数に追加しないでください。これらの変数は、新しいシェルインスタンスごとに長くなります。代わりに、-Uxコマンドラインでsetを1回実行するだけです。そしてそれはファイル.config/fish/fishd.MACHINE_IDに保存されます、ここMACHINE_IDで通常あなたのMACアドレスです。


私の変数はで保存されていなかったfishd.MACHINE_IDが、代わりに保存された~/.config/fish/fish_variables
Seanny123

私の変数は~/.config/fish/fish_variablesubuntu20.04に保存されました
Igor Markelov

11

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

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

ここで、env_file.txtには次の形式の行が含まれています VAR=VALUE

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


:ケースであなたはあなたができるコメントは避けたい export (grep "^[^#]" .env |xargs -L 1)
ギジェルモ

10

魚の環境変数

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.