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/command
env - /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의 코멘트: )는
env
POSIX 표준 명령입니다.
편집하다답변을 명확히했습니다.