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
이것은 Fish의 수출 구현에 있어서 단지 결함/누락인가요?
이 질문은 비슷하지만 다른 두 게시물과 다릅니다.
답변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