다음 동작이 약간 혼란스럽다고 생각합니다. 왜 이런 일이 발생하는지 설명해 주실 수 있나요?
나는 /etc/bash.bashrc
다음을 가지고 있습니다 :
EDITOR=vim
물론:
lev@home ~ $ echo $EDITOR
vim
나는 그것을 존중하고 싶다 visudo
. 이제 man visudo
이 변수가 항상 존중되는 것은 아니라는 것을 읽었 지만 다음이 왜 다른 결과를 제공하는지 이해하지 못합니다.
$ sudo visudo # opens vi
$ sudo EDITOR=vim visudo # opens vim
이 EDITOR
변수는 루트(AFAIU)에도 설정되어야 합니다.
$ sudo echo $EDITOR
vim
또한 (저는 Arch Linux를 사용하고 있습니다)를 AUR
사용하여 패키지를 설치 yaourt
하고 PKGBUILD 파일을 편집하도록 선택하면 다음이 표시됩니다.
Please add $EDITOR to your environment variables
for example:
export EDITOR="vim" (in ~/.bashrc)
(replace vim with your favorite editor)
==> Edit PKGBUILD with:
따라서 문제는 visudo
.변수 세트를 볼 수 있지만 프로그램은 볼 수 없는 이유는 무엇입니까(명령에서 다시 지정하지 않는 한)?
기술적 인 정보:
lev@home ~ $ uname -a
Linux home 3.6.9-1-ARCH #1 SMP PREEMPT Tue Dec 4 08:04:10 CET 2012 x86_64 GNU/Linux
lev@home ~ $ bash --version | head -1
GNU bash, version 4.2.39(2)-release (x86_64-unknown-linux-gnu)
답변1
설정했지만 내보내지 않았습니다. 줄을 다음으로 변경합니다.
export EDITOR=vim
답변2
Chris의 답변에 따라 변수를 하위 프로세스의 기본 환경으로 내보낸 후 현재 환경을 보존하도록 sudo에 지시해야 합니다. 이는 -E
전체 환경을 보존하는 sudo 옵션을 통해 수행 할 수 있으며 , 이 특정 경우에는 해당 변수만 보존하기 위해 sudoers 파일 EDITOR
에 변수를 추가합니다.env_keep