ksh 쉘에서 깨끗한 환경을 얻는 방법은 무엇입니까?

ksh 쉘에서 깨끗한 환경을 얻는 방법은 무엇입니까?

Ksh 셸에서 모든 환경 변수를 제거해야 합니다. 새 인스턴스를 포크할 수 있지만 필연적으로 일부 초기화 파일을 가져오게 됩니다(내가 아는 한 .profile) .kshrc. 이러한 파일과 초기화 시 읽을 수 있는 다른 파일의 원본을 우회할 수 있는 방법이 있습니까?

  • Ksh 버전: 버전 M-11/16/88i
  • 운영 체제: 솔라리스 10

내가 충분히 명확하게 설명하길 바랍니다.

답변1

~/.profile로그인 쉘에서만 읽을 수 있습니다. ~/.kshrc대화형 쉘에 대해서만 실행됩니다.

Solaris는 빈 환경에서 실행하기 위한 구문을 지원합니다 env(현재는 더 이상 사용되지 않지만 이전 버전과의 호환성을 매우 중요하게 생각하는 Solaris에서는 유지됩니다). 따라서 스크립트는 빈 환경에서 실행되며 프로필 스크립트는 선택되지 않습니다. Ksh는 일부 환경 변수를 적극적으로 설정할 수 있습니다. ksh88에 대해서는 모르지만 ksh93은 and, pdksh는 and를 설정합니다.env - /path/to/command/path/to/commandenv - /usr/bin/ksh -c /path/to/script_PWD_PATH

ksh 내에서 선택적으로 또는 무차별적으로 환경 변수를 지울 수 있습니다.

unset x
for x in $(typeset +x); do
  unset $x
done

답변2

me@local:~ $ env - /path/to/shell
$ env
_=/usr/bin/env
PATH=/usr/bin:/bin
RANDOM=24395
$

노트:

  • 쉘을 사용하여 생성된 환경을 확인합니다. 어떤 명령이라도 사용할 수 있습니다( env - /usr/bin/env무엇이 반환되는지 추측).
  • (@jlliagre의 코멘트: )는 envPOSIX 표준 명령입니다.

편집하다답변을 명확히했습니다.

관련 정보