슈퍼유저 모드에서 맞춤형 PS1을 유지하는 방법은 무엇입니까?

슈퍼유저 모드에서 맞춤형 PS1을 유지하는 방법은 무엇입니까?

문제는 이것이다:

.bashrc에 사용자 정의가 설정되어 있지만 PS1수퍼유저 모드로 들어가면 기본값으로 변경됩니다.

내가 기대한 것:

╓[coffee]─[Linux-Tower]─[2014-11-05, 23:41]─[~]
╙[$]-[sudo su
[sudo] password for coffee: 
╓[root]─[Linux-Tower]─[2014-11-05, 23:41]─[~]
╙[#]-[

내가 얻는 것:

╓[coffee]─[Linux-Tower]─[2014-11-05, 23:41]─[~]
╙[$]-[sudo su
[sudo] password for coffee: 
root@Linux-Tower:/home#

PS1그렇다면 루트로 실행할 때 사용하고 싶은 것을 어떻게 설정합니까 ?

답변1

를 사용하지 마십시오 sudo su. su이미 를 사용하여 루트이므로 이는 의미가 없습니다 sudo.

대신 사용하십시오 sudo -Es. 그러면 환경이 보호될 것입니다. 그러나 문제가 있습니다. 쉘은 대화형으로 시작되므로 소스에 액세스하여 ~/.bashrc재설정될 수 있습니다 $PS1. 그러나 $HOME그것은 보존될 것이므로 bash는 .bashrc루트의 홈 디렉토리가 아닌 를 찾을 때 홈 디렉토리를 사용할 것입니다. 따라서 귀하의 개인 데이터가 사용됩니다.

그러나 여기에는 문제가 발생할 수 있습니다. 앞에서 언급한 대로 $HOME사용자의 홈 디렉터리를 설정하면 거기에 파일을 생성하는 모든 명령이 $HOME/루트로 생성됩니다. 그러나 파일이 이미 존재하고 덮어쓰기만 되어도 상관없습니다.

 

정말로 보존하고 싶다면 $PS1이렇게 할 수 있지만 그렇게 깨끗하지는 않습니다.

sudo -E bash --norc

또는

sudo PS1="$PS1" bash --norc

가장 큰 단점은 이 방법이 명시적으로 bash쉘로 사용되며 --norcbash 특정 옵션이기도 한다는 것입니다. 위의 방법은 설정하지 않은 경우 무엇이든 sudo -Es사용합니다 . 또한 이 방법을 사용할 때는 내보내졌는지 확인해야 합니다 .$SHELLbash
-E$PS1

관련 정보