$가 사용자 쉘의 기본 기호이고 #이 루트 쉘의 기본 기호인 이유는 무엇입니까?

$가 사용자 쉘의 기본 기호이고 #이 루트 쉘의 기본 기호인 이유는 무엇입니까?

서버에서 표준 bash 셸을 작동하면 PS1 프롬프트는 기본적으로 $(루트가 아닌 사용자의 경우)로 끝나고 루트 사용자의 경우 #으로 끝납니다.

즉:

ubuntu@server:~$ sudo su
root@server:/home/ubuntu#

왜 이런거야?

답변1

$역사적으로 원래 /bin/sh Bourne 쉘은 일반 프롬프트와 #루트 프롬프트(csh에서 사용 ) 모두로 사용되었습니다 %. 이를 통해 슈퍼유저로 실행 중인지 쉽게 알 수 있습니다.

#또한 주석 문자이므로 맹목적으로 데이터를 다시 입력하는 사람은 실제 명령을 실행하지 않습니다.

보다 현대적인 쉘(예: ksh, bash)은 이러한 구별을 계속하지만 $, #더 복잡한 값(예: 사용자 이름, 호스트 이름, 디렉토리)을 설정할 수 있는 경우에는 덜 중요합니다. :-)

답변2

전통.

POSIX 표준에 따르면(내 강조점):

PS1

이 변수는 대화형 프롬프트에 사용됩니다. 역사적으로 "수퍼유저"에 대한 프롬프트는 #권한이 모놀리식일 필요가 없으므로 대체 프롬프트가 발생해야 하는 권한을 정의하기가 어렵습니다.그러나 충분히 강력한 사용자에게는 대체 프롬프트를 통해 이 기능을 상기시켜야 합니다.

당신은 또한 볼 수 있습니다이 답변슈퍼유저 포럼에도 거의 같은 질문이 있습니다.

관련 정보