피쉬 쉘에서 하나의 명령에 대해서만 환경 변수를 설정하려면 어떻게해야합니까? bash에서는 할 수 있습니다 EDITOR=vim crontab -e.

bash에서는 할 수 있습니다 EDITOR=vim crontab -e. 생선 껍질에서도 비슷한 효과를 얻을 수 있습니까?



답변

begin; set -lx EDITOR vim; crontab -e; end

답변

왜 이것이 작동하지 않아야하는지 알지 마십시오
env EDITOR=vim crontab -e
. 쉘을 완전히 우회합니다.


답변

그것은 문서 에서 나온 것입니다

SOME_VAR=1 command produces an error: Unknown command "SOME_VAR=1".

env 명령을 사용하십시오.

env SOME_VAR=1 command

또한 블록에서 지역 변수를 선언 할 수 있으며 쉘을 우회하지 않습니다

begin
  set -lx SOME_VAR 1
  command
end

답변

be함수 의 정의에 따라 실패 할 수 있습니다

begin
  set -lx RAILS_ENV staging
  be rails r "p ENV['RAILS_ENV']"
end

그것이 작동하려면 :

function be --description 'Runs bundle exec' --no-scope-shadowing
  bundle exec $argv
end

–no-scope-shadowing 옵션에 대한 설명을 참조하십시오

-S 또는 –no-scope-shadowing을 사용하면 함수가 호출 함수의 변수에 액세스 할 수 있습니다. 일반적으로, 호출 함수의 변수와 이름이 같은 함수 내부의 모든 변수는 “그림자”이며 그 내용은 호출 함수와 무관합니다.