루트로 기능 할 때 bash 프롬프트의 동작 변경


16

클릭하기 전에 이것은 일반적인 "bash 프롬프트에 색상을 지정하는 방법"이 아닙니다. 나는 이미 다음과 같이 bash 프롬프트를 사용자 정의했다.

[user @ host]----[$(pwd)]
$ 

~ / .bashrc 파일에 다음을 추가하여 대괄호 안의 모든 것이 밝은 파란색이고 다른 모든 ($ 포함)은 검은 색입니다.

# Turn the prompt symbol red if the user is root
if [ $(id -u) -eq 0 ];
then # you are root, make the prompt red
    PS1="[\e[01;34m\u @ \h\e[00m]----[\e[01;34m$(pwd)\e[00m]\n\e[01;31m#\e[00m "
else
    PS1="[\e[01;34m\u @ \h\e[00m]----[\e[01;34m$(pwd)\e[00m]\n$ "
fi

목표는 'sudo su'를 사용할 때 변경되는 유일한 것은 검은 $가 빨간색 #으로 바뀌는 것입니다. 주석 처리 할 줄이 있는지 확인하기 위해 /etc/bash.bashrc 및 / etc / profile을 살펴 보았지만 debian_chroot에 대해 이해할 수없는 많은 것들이 있으며 원하지 않습니다. 무언가를 망칠 수 있습니다. 원하는 것을 어떻게 달성 할 수 있습니까?

추신 : 이것은 프롬프트가 루트처럼 보이기를 원하는 것입니다.

[user @ host]----[$(pwd)]
(red)#

편집 : 루트가 내 목표를 달성하는 동안 ~ / .bashrc에 위의 코드를 추가 하여이 문제를 해결했습니다. 또한 위의 코드에서 $ (pwd)는 홈 디렉토리 만 표시합니다 (터미널을 열 때 작업 디렉토리이기 때문에 추측하지 않습니다). $ (pwd)를 \ w로 바꾸면이 문제가 해결되지만 홈 디렉토리는로 표시됩니다 ~.


$ pwd 또는 $ PWD를 사용하고 있습니까?
belacqua 2016 년

bash에게 인쇄 할 수없는 문자를 사용하고 있다고 말하지 않았으므로 줄을 올바르게 줄 바꿈하지 못합니다. 같은 인쇄 할 수없는 문자를 동봉 \e[01;31m\[...\]. 이것은 설명서의 PROMPTING 아래에 설명되어 있습니다. 또한 참조 mywiki.wooledge.org/BashFAQ/053
geirha

pwd프롬프트에서 작동하지 않는 이유 는 달러 기호를 이스케이프해야하며, 그렇지 않으면 콘텐츠가 $ PS1에 배치 되기 전에$(pwd) 실행됩니다 . 다음과 같이 테스트 할 수 있습니다 .. PS1="\$(pwd) "
F-3000

답변:


12

또한 루트 사용자가되는 방법에 따라 다릅니다. 당신은 같은 것을 사용하는 경우 루트 사용자의 .bashrc에 변화를 만들 필요가 su - root또는 sudo -i당신이 환경에서 읽기.

을 사용하면 sudo -s자신의 .bashrc를 읽어야합니다.

코드를 디버깅하기 위해 printf 또는 echo 문을 추가하여 코드가 언제 실행되는지 알려줄 것을 고려하십시오.

id자신이 생각하는 사람인지 확인 하려면 다음 명령을 사용하십시오.

root@tau:~# id
uid=0(root) gid=0(root) groups=0(root)

사용하고 있습니다sudo su
zmitchell

1
sudo su~ root / .bashrc (적어도 현재 13.04 시스템에서 구현 된 것처럼)를 읽습니다.
belacqua 2016

3

루트의 프롬프트 색상을 빨간색으로 변경하기 .bashrc위해이 스레드의 예제에 따라 파일을 수정했습니다 .

regularuser@myubuntubox:~$ sudo su - 
root@myubuntubox:~# vim .bashrc

그런 다음 vim에서 PS1할당 의 최종 모양을 검색하여 다음에 추가합니다 ( $PS1이전 값을 업데이트하여 다른 이전 행을 수정할 필요가 없으며 변경을 쉽게 되돌릴 수 있음).

# Set RED prompt
PS1="\[\e[01;31m\]$PS1\[\e[00m\]"

2

belacqua의 유효한 답변 /ubuntu//a/305053/12218 에 따라 sudo su를 발행하여 루트의 .bashrc 가로 드됩니다.

당신은 실행하여이를 확인할 수있는 sudo su다음 cd ~루트의 홈 디렉토리에있는 것을 볼 수 있습니다 당신.

상승 된 권한을 가진 사용자와 sudo su달리 루트 (su = 사용자 전환)로 로그인을 사용 합니다
sudo do some administrative task.

그래서 사용하여 sudo su당신은 실제 루트가되어 환경에 대한 변경 즉, 변경이 루트에 특별히 만들어진 : sudo su다음에 vim .bashrc.


0

다음과 같은 도움이 될 수 있습니다

export PS1='`[ $(id -u) == "0" ] && echo "#" || echo ">"` '

이 표시됩니다 '> '일반 사용자 및 '# '루트. 이것은 여전히 ​​루트에 있어야합니다 .bashrc.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.