누군가가 물고기 껍질에 환경 변수를 설정하는 올바른 방법이 무엇인지 말해 줄 수 있습니까?
내 .config / fish / config.fish 파일에는 환경 변수를 설정하는 기능이 있습니다.
function setTESTENV
set -x BROKER_IP '10.14.16.216'
set -x USERNAME 'foo'
set -x USERPASS 'bar'
end
명령 프롬프트에서 입력 하고 명령 줄에서 setTESTENV
a env
를 수행하면 이러한 정보가 표시되지 않습니다.
답변
선언하는 변수는 함수 내의 로컬 범위에 유지됩니다.
사용하다:
set -g -x
여기 ” g
“는 글로벌 용입니다.
답변
범용 변수 사용
현재 컴퓨터의 모든 현재 사용자 피시 인스턴스간에 변수를 공유 하고 셸 을 다시 시작할 때까지 유지 해야하는 경우 -U
또는 --universal
다음 을 사용해야합니다 .
set -Ux FOO bar
set
with를 사용 -g
하거나 --global
셸 인스턴스간에 지속적으로 변수를 설정하지 않습니다.
참고 :
config.fish
파일의 범용 변수에 추가하지 마십시오. 이러한 변수는 각각의 새 쉘 인스턴스에서 더 길어질 것입니다. 대신 -Ux
명령 줄에서 set을 한 번만 실행 하면됩니다. 그리고 그것은 파일에 저장됩니다 .config/fish/fishd.MACHINE_ID
, MACHINE_ID
일반적으로 MAC 주소입니다.
답변
다른 옵션은 다음을 실행하는 것입니다.
export (cat env_file.txt |xargs -L 1)
env_file.txt에는 형식의 행이 포함됩니다. VAR=VALUE
이것은 다른 쉘 및 도구에서 지원하는 형식으로 변수를 유지하는 이점이 있습니다.
답변
@JosEduSol의 답변이 올바르지 않고 OP 문제를 해결하는 데 도움이 -g
되지만 범위를 전역으로 설정 -x
하고 지정된 환경 변수를 하위 프로세스로 내보내는 것임을 추가하고 싶습니다 .
위의 실패 이유는 @cfpete가 함수 내부에 env 변수를 설정하고 기본 범위가 해당 함수에 국한되기 때문입니다.