서버에서 표준 bash 셸을 작동하면 PS1 프롬프트는 기본적으로 루트가 아닌 사용자의 경우 $로 끝나고 루트의 경우 #으로 끝납니다.
즉:
ubuntu@server:~$ sudo su
root@server:/home/ubuntu#
왜 이런거야?
답변1
역사적으로 원래 /bin/sh Bourne 쉘은 $
일반 프롬프트와 #
루트 사용자 프롬프트로 사용되었습니다(그리고 csh는 를 사용했습니다 %
). 이를 통해 슈퍼유저로 실행 중인지 아닌지를 쉽게 알 수 있습니다.
#
는 주석 문자이기도 하므로 맹목적으로 데이터를 다시 입력하는 사람은 실제 명령을 실행하지 않습니다.
보다 현대적인 쉘(예: ksh, bash)은 이러한 구별을 계속 $
하지만 #
사용자 이름, 호스트 이름, 디렉토리와 같은 더 복잡한 값을 설정할 수 있는 경우에는 덜 중요합니다. :-)
답변2
전통.
POSIX 표준에 따르면(내 강조점):
PS1
이 변수는 대화형 프롬프트에 사용됩니다. 역사적으로 "수퍼유저"는
#
. 권한은 모놀리식일 필요가 없으므로 어떤 권한이 대체 프롬프트를 발생시켜야 하는지 정의하기가 어렵습니다.그러나 충분히 강력한 사용자에게는 대체 프롬프트를 통해 해당 기능을 상기시켜야 합니다.
또한보십시오이 답변SuperUser 포럼에서도 거의 동일한 질문을 했습니다.