Bash 프롬프트의 사용자 모드 기호

Bash 프롬프트의 사용자 모드 기호

Bash 항목 라인에서 제공하는 프롬프트에서 호출되는 이름/차이점/기호를 찾으려고 합니다.

예: user@user~$ $는 무엇입니까? 일부 시스템에서는 $ 대신 사용자 %인 이유는 무엇입니까? 변경할 수 있는 설정인가요?

나는 >(user)와 #privileged exec 사이의 Cisco IOS 관점에서 이것을 생각하고 있습니다. 이 기호는 거기에 목적이 있는데 *Nix 시스템에서는 어떤 목적으로 사용됩니까?

답변1

이 역할에 이름이 있는지는 잘 모르겠습니다. 전통적으로 사용자가 root루트인지( #루트인지 아닌지 $를 의미)를 나타내는 데 사용됩니다. Bourne 스타일 셸(Bash 포함), C 셸 및 Zsh와 함께 사용됩니다. Zsh에서는 정의가 약간 더 넓습니다. POSIX 기능을 개선했거나 개선한 경우 이것이 표시됩니다.%$%#root

프롬프트 정의에 따라 표시 여부가 결정됩니다.큰 타격을 입은 상태에서\$프롬프트 정의에서 #또는 $로 대체됩니다.Zsh에서은 또는 %#로 대체됩니다 . 확장 버전을 사용하면 Zsh에서 다른 문자를 사용할 수 있습니다 .#%%(!.#.%%)

$가 사용자 쉘의 기본 기호이고 #이 루트 쉘의 기본 기호인 이유는 무엇입니까?더 많은 정보가 있습니다.

답변2

에서 man bash:

팁 대화형으로 실행할 때 bash는 명령을 읽을 준비가 되면 기본 프롬프트 PS1을 표시하고, 명령을 완료하기 위해 더 많은 입력이 필요할 때 보조 프롬프트 PS2를 표시합니다. Bash를 사용하면 다음과 같이 디코딩되는 백슬래시로 이스케이프된 특수 문자를 삽입하여 이러한 프롬프트 문자열을 사용자 정의할 수 있습니다.

...

  • \$ # 유효 UID가 0이면 $, 그렇지 않으면

따라서 bash*로 하드코딩되어 있습니다. 이는 다른 쉘에도 적용될 수 있습니다. 나는 80년대의 아주 오래된 unice를 기억합니다 %. 지금 csh은 .%


* 물론 PS1을 사용자 정의할 수 있지만 UID를 기반으로 하나 또는 다른 캐릭터를 사용하는 내장 기능은 없습니다.

관련 정보