실험적인 목적으로...
내가 이렇게 한다고 가정해보자
bash="unset DISPLAY; export DISPLAY"
그래서 정의되지 않은 상태로 만들 수 있습니다 DISPLAY
. 원래 설정값을 복원하는 방법은 무엇입니까? 아니면 적어도 그것이 무엇인지 아시나요?
답변1
일반적으로 미리 적어 두는 것이 좋습니다.
이론적으로 이 질문을 하는 경우 수정하기 전에 이전 값을 다른 곳에 저장한 다음 필요할 때 다시 넣을 수 있습니다.
당신이 지금 망가져 있고 무언가가 당신을 구할 수 있기를 바라기 때문에 이 질문을 하는 경우, 나쁜 소식이 있습니다…
답변2
이 작업을 수행하는 쉬운 방법이 있는지 잘 모르겠습니다(예: cd -
최근 명령 간에 앞뒤로 이동).cd
이렇게 된 배경은.. 자동으로 사용 가능하게 하시겠습니까? 나는 이것이 어떤 쉘의 기능인지 알지 못합니다.
확실한 해결책은 변수를 변경하기 전에 명시적으로 저장한 다음 나중에 복원하는 것입니다. VENDOR 환경 변수를 예로 들어 보겠습니다.
$ echo $VENDOR
intel
원래 값을 저장합니다.
$ pre_VENDOR=$VENDOR
$ echo $pre_VENDOR
intel
새 값을 할당합니다.
$ VENDOR='Zippy'
$ echo $VENDOR
Zippy
원래 값을 복원합니다.
$ VENDOR=$pre_VENDOR
$ echo $VENDOR
intel
답변3
할 수 없습니다. 취소할 여지가 없습니다. 나중에 값을 사용하려면 다른 변수(또는 파일 또는 원하는 위치)에 저장하세요.
old_DISPLAY=$DISPLAY
unset DISPLAY
…
DISPLAY=$old_DISPLAY
환경 변수 없이 단일 명령을 실행하려면 env
.
env -u DISPLAY emacs
또한 구문을 사용하여 환경 변수를 해당 명령에 대해서만 지정된 값으로 VAR=VALUE COMMAND
설정할 수도 있습니다.VAR
$ echo $DISPLAY
:0
$ DISPLAY=:1 xterm & # shows the xterm window on display :1
$ echo $DISPLAY
:0
이 방법으로 변수를 설정 해제할 수는 없지만 일반적으로 충분하면 null 값으로 설정할 수 있습니다.
또한 서브셸의 로컬 변경 사항을 유지할 수도 있습니다. 괄호는 서브쉘에서 실행될 명령을 구분합니다.
$ env | grep -E 'FOO|BAR'
FOO=value_of_FOO
BAR=value_of_BAR
$ (export FOO=other_value; unset BAR; env | grep -E 'FOO|BAR')
FOO=other_value
$ env | grep -E 'FOO|BAR'
FOO=value_of_FOO
BAR=value_of_BAR
다양한 환경에서 별도의 셸을 실행할 수 있습니다. 상위 쉘로 돌아가려면 exit
또는 Ctrl+를 입력하십시오 .D
$ bash
$ # change the environment, change directories, etc.
$ exit
$ # now you're back to the parent shell with its environment as you left it