Bash의 깨끗한 환경에서 프로그램을 실행하는 방법은 무엇입니까?

Bash의 깨끗한 환경에서 프로그램을 실행하는 방법은 무엇입니까?

빈 환경(즉, 변수가 설정되지 않음)에서 프로그램을 실행하고 싶습니다. 배쉬에서는 어떻게 하나요?

답변1

다음과 같은 방법으로 이 작업을 수행할 수 있습니다 env.

env -i your_command

아래 댓글들과는 달리,하다환경을 완전히 지우지만 your_command새 변수가 설정되는 것을 막지는 않습니다. 특히, 셸을 실행하면 셸 도 /etc/profile실행되며, 셸에는 일부 내장 설정이 있을 수도 있습니다.

다음을 통해 확인할 수 있습니다:

env -i env

즉, 환경을 닦은 다음 인쇄하십시오. 출력은 비어 있습니다.

답변2

bash"깨끗한" 환경을 가질 수 있습니다

$ env -i bash --noprofile --norc
  • env -i명령은 이전 쉘 환경의 내보낸 환경 변수를 실행 프로그램의 환경으로 전송하지 않고 명령줄에서 주어진 명령을 실행합니다.

  • --noprofile옵션은 bash로그인 쉘에서 읽을 수 있는 시스템 전체 또는 개인 쉘 초기화 스크립트 읽기를 중지합니다.

  • --norc옵션은 bash대화형 쉘에서 읽을 수 있는 개인 쉘 초기화 스크립트 읽기를 중지합니다.

답변3

env -i somecommand다음과 같은 빈 환경에서 명령을 실행하십시오.ams는 이미 언급했습니다.

많은 프로그램이 몇 가지 중요한 환경 변수에 의존하므로 이를 보존하는 것이 좋습니다.

env -i HOME="$HOME" LC_CTYPE="${LC_ALL:-${LC_CTYPE:-$LANG}}" PATH="$PATH" USER="$USER" somecommand

또는 소규모 로그인 시간 환경에 로그인할 수 있습니다.

ssh localhost somecommand

답변4

여기에 있는 대부분의 답변의 문제는 env -i해결 HOME되므로 내부적으로 실행하더라도 등을 bash -l읽지 못합니다 . .bash_profile찾고 있는 것이 방금 새 로그인을 완료한 것처럼 쉘인 경우 다음을 원합니다.

env -i HOME="$HOME" bash -l -c 'your_command'

예:

$ export ABC=123
$ env -i HOME="$HOME" bash -l -c 'env' | grep ABC
$ env HOME="$HOME" bash -l -c 'env' | grep ABC
ABC=123

관련 정보