환경 변수없이 쉘 스크립트 실행


17

아시다시피, 새로 실행되는 셸 스크립트는 환경 변수를 상속합니다. 이것을 막을 방법이 있습니까? (변수 상속없이 쉘 실행)

답변:


21

스크립트를 env -i실행하기 전에 환경을 지우는 스크립트를 접두어로 사용할 수 있습니다 .

env -i sh test.sh

보낸 사람 man env:

-i, --ignore-environment
              start with an empty environment

왜 당신이 이것을하고 싶은지 모르겠습니다 ...


감사. 이것은 효과가 있었다! IDE의 구성 환경 변수에 영향을 미치지 않고 IDE에서 빌드 스크립트를 호출하려면 이것이 필요합니다. 그러나 여전히 먼 목표에 도달했습니다. 이것은 당신의 호기심을 도울 수 있습니다!
Eonil

다른 유스 케이스를 추가하려면 : 현재 bash의 대안으로 fish와 zsh를 평가하고 있습니다. 하지만 같이 (내 로그인 쉘과 후보 쉘을 홍보 아직 준비가 아니에요 chsh .... 난 그냥 터미널 창을 열고 실행하는 경우 zshfish또는없이 ( -l가에서 변수의 모든 종류의 내 환경을 오염) 문제가되지 않습니다 shell 나는 그것을 시작했다. 트릭을 사용하면 env -c이 문제를 해결할 수있다 env -i TERM=xterm-256color $(which fish)..
Paidhi

환경이 올바르게 구성되지 않아서 테스트해야하는 cron 태스크가 실패한 경우에 유용합니다. 또한 스크립트가 환경 설정에 대해 가정하는지 테스트하는 좋은 방법입니다. 감사!
razzed

이것이 유용 할 수있는 또 다른 장소는 스크립트에 환경 의존성이 없는지 확인하기 위해 일부 주기적 작업 (예 : 크론 작업)을 테스트하는 것입니다. 꼭두각시 매니페스트의 "Exec"리소스에서 실행될 명령과 동일합니다.
TommyTheKid

1

한 가지 가능성은 (아직 추악한 것처럼 보이지만) :

exec -c $SCRIPT빈 환경에서 $ SCRIPT를 시작합니다. ( man bash검색 참조 exec \[-cl\]).


1
이것은 env -i와 거의 동일하게 작동했지만 exec가 나머지 스크립트 실행을 중지하기 때문에 env -i를 사용하기로 선택했습니다.
Eonil

-1

내가 아는 한 대답은 "아니오"입니다. 스크립트 자체에서 환경 변수를 무시할 수 있습니다. 스크립트 실행이 완료되면 환경 변수의 값이 원래 값으로 다시 전환되어야합니다. 스크립트를 자식 프로세스로 실행해야 할 수도 있습니다 : $ this.script.sh & 환경 변수를 원래 값으로 재설정하기 위해 스크립트를 실행할 때마다 셸에서 로그 아웃하지 않아도됩니다.

편집하다:

초기 포스터부터는 불가능하다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.