
Fish Shellでエクスポートして環境変数を設定できますか?私はこのように変数が設定されたプロジェクトを進めていますが、フィッシュ用に別々の設定ファイルを保持することは意味がありません。
Bashでは、次の例を考えてみましょう。
echo -e "foo=1\nfoobar=2\n" > foo; export $(cat foo | xargs); env | grep foo
foo=1
foobar=2
フィッシュシェルは変数を設定するように見え、ファイルに変数がある場合にのみ可能です。
~ $ echo -e "foo=3\nfoobar=4" > foo; export (cat foo | xargs); env | grep foo
~ $ echo -e "foo=3" > foo; export (cat foo | xargs); env | grep foo
foo=3
これはフィッシュの輸出の実施における単なる欠陥/欠落ですか?
この質問は似ていますが、他の2つの投稿とは異なります。
答え1
あなたの例はほぼ完璧に動作します。export
問題ではありませんが、使い方ですxargs
。
努力する:
echo -e "foo=3\nfoobar=4" > .env; export (cat .env); env | grep foo
その理由は、コマンドが区切られた改行文字の引数を置き換えてxargs
削除するためです。
> count (cat .env | xargs)
1
> count (cat .env)
2
答え2
Fishでは、次のエラーが発生すると予想されますexport
。
$ echo -e "foo=1\nfoobar=2\n" > foo; export (cat foo | xargs); env | grep foo
bash: --: command not found...
fish: echo -e "foo=1\nfoobar=2\n" > foo; export (cat foo | xargs); env | grep foo
^
その行を含むファイルがあり、variable=value
それを使用して環境変数を設定したい場合:
$ cat foo
foo=1
foobar=2
$ source (sed -rn 's/^([^=]+)=(.*)/set -x \1 \2/p' foo | psub)
$ set -x | grep foo
foo 1
foobar 2