다음 구성은 내 구성입니다 /etc/sudoers
.
Defaults !visiblepw
Defaults always_set_home
Defaults env_reset
Defaults env_keep = "COLORS EDITOR DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
내 sudo su
터미널이 PS1
시스템 기본값으로 변경되면 내 .bashrc
PS1
설정이 무시됩니다. ing 시 환경 변수가 손실되지 않도록 이 문제를 어떻게 해결할 수 있습니까 sudo su
?
이상합니다. 수출 중인데 EDITOR
어떤 이유로 PS1
강제로 수출되지 않는 경우가 있습니다.
sudo -V
유지할 변수를 실행하면 PS1
삭제할 변수에 나열되지 않습니다.
답변1
을 (를) 사용하지 마십시오 sudo su
. 이것은 모욕적이거나 쓸모없는 사용입니다 su
. 올바른 값은 입니다 sudo -s
.
환경 변수를 보존하려면 sudo -Es
.
상황이 여전히 변경되고 있는 경우 $PS1
해당 작업을 수행하는 스크립트가 있을 것입니다. sudo -Es $SHELL -x
출력을 실행하고 읽으면 위치를 알 수 있습니다 .
답변2
1~2년 전, Unix 시스템 쉘 작성자와 패키지 관리자는 일반적으로 다음을 수행하는 것이 최선이라는 데 동의했습니다.아니요 export PS1
(다양한 쉘 사이의 큰 구문 차이와 다른 쉘에 대한 프롬프트를 제공할 때 일부 쉘의 "폭발적인" 동작으로 인해) 우리 모두는 PS1
초기화를 대화형 셸 시작 파일 (예: ~/.mkshrc
등 ~/.kshrc
) 로 옮기는 데 동의했습니다.~/.bashrc
면책조항: 저는 mksh 개발자입니다.
답변3
$ENV
일반적으로 셸을 호출할 때 셸의 소스 파일을 명시적으로 설정할 수 있습니다 . 예를 들어, 다음과 같은 행운이 있을 수 있습니다.
sudo ENV=/home/$USER/.bashrc su
실패하면 다음을 시도해 볼 수도 있습니다.
sudo su -c "exec </dev/tty ENV="~/.bashrc" bash -i"
답변4
PS1
아마도 쉘이 시작될 때 초기화되었을 것입니다. 즉, 값은 실제로 쉘에 의해 유지되지만 sudo
이후에 쉘에 의해 덮어쓰여집니다.