%EC%97%90%EC%84%9C%20%EC%9D%B8%EC%8B%9D%2F%EC%95%A1%EC%84%B8%EC%8A%A4%EB%90%98%EB%8A%94%20%EA%B2%83%EC%9D%84%20%EB%B0%A9%EC%A7%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
따라서 서브셸이 내보낸 변수 로드를 인식하지 못하도록 방지해야 합니다.
문제는 응용 프로그램(Wine+UDK)이 환경에 너무 많은(>65535) 바이트가 있는 프로젝트를 빌드하지 않는다는 것입니다. 그리고 bash 간에 환경 변수를 공유하는 프로젝트(ScriptEchoColor)를 사용한 후에 내 프로젝트에는 많은( 95323) 바이트 쉘.
현재 환경 변수를 허용하지 않고 대신 내 사용자 프로필과 시스템 전체에 설정된 변수만 사용하는 하위 쉘을 생성할 수 있는 명령을 찾을 수 없습니다.
나는 그림과 같이 많은 옵션을 시도했습니다 bash --help
.
답변1
이 env
명령을 사용하여 깨끗한 환경에서 프로세스를 시작할 수 있습니다. 예는 다음과 같습니다.
env -i /bin/myprog
여전히 일부 변수를 내보내야 하는 경우 호출 중에 다음을 수행할 수 있습니다.
env -i MYVAR=foo /bin/myprog
env 명령이 필요합니다POSIX.
답변2
env -i somecommand
somecommand
빈 환경에서 실행하세요. 나중에 매개변수를 넣을 수 있습니다 somecommand
. 제거된 경우 PATH
전체 경로를 지정해야 합니다 somecommand
. 또는 PATH
다른 값을 유지하거나 설정할 수 있습니다.
env -i PATH="$PATH:/another/directory" somecommand
로그인 후와 동일한 환경을 원하시면 몇 가지 변수만 남겨두고 변수를 로드하여 .profile
나머지를 설정하시면 됩니다. 다른 로그인 셸(bash 대 .bash_profile
csh .login
등)을 사용하는 경우 그에 맞게 조정하세요.
env -i HOME="$HOME" PATH=/usr/local/bin:/usr/bin:/bin USER="$USER" \
sh -c '. ~/.profile; "$@"' _ somecommand
또는 환경에서 일부 변수를 제거하는 것이 좋습니다. 환경에서 env -u VAR1 -u VAR2 somecommand
제거 및 실행 VAR1
Linux에서는 필터링에 적합한 한 줄에 하나의 이름으로 환경 변수 목록을 생성하는 데 사용할 수 있습니다. 다른 UNIX 변형에서도 동일한 작업을 수행하지만 일부 변수의 값에 개행 문자가 포함된 경우 거짓 긍정을 찾을 수 있다는 제한이 있습니다.VAR2
somecommand
env -0 | tr '\n\0' '.\n' | sed 's/=.*//'
env | sed 's/=.*//'
답변3
문제 typeset +x variable_name...
또는 declare +x variable_name...
명령. 와 같은 정규식을 변수 이름으로 사용할 수도 있습니다 typeset +x ${!MY_VAR_*}
.