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