데비안의 기본 bash 쉘은 왜 무색인가요?

데비안의 기본 bash 쉘은 왜 무색인가요?

기본 데비안 쉘이 왜 무색인지 검색해봤지만 답을 찾을 수 없습니다.

데비안 셸(bash)이 기본적으로 무색인 이유는 무엇입니까?

답변1

데비안 셸(bash)이 기본적으로 무색인 이유는 무엇입니까?

따라서 ( .bashrc일반적인 데비안 설치에서는 강조하겠습니다):

# 터미널이 가능하다면 색상 프롬프트의 주석을 해제하세요.돌아서 다
# 사용자의 주의를 산만하게 하지 않도록 기본적으로 꺼져 있습니다. 터미널 창에 초점을 맞춥니다.
# 프롬프트가 아닌 명령 출력에 나타나야 합니다.
#force_color_prompt=예

if [-n "$force_color_prompt"];
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null;
    # Ecma-48을 준수한다고 가정하여 색상을 지원합니다.
    #(ISO/IEC-6429). (이러한 지원이 부족한 경우는 극히 드뭅니다.
    # 한 경우는 setaf보다 setf를 선호합니다. )
    color_prompt=예
    기타
    색상 힌트 =
    필리핀 제도
필리핀 제도

즉, "기능"이거나 원하는 경우 디자인 선택입니다.

답변2

(질문의 원래 버전에서는 루트의 셸과 관련이 있다고 제안했습니다. 특히 이를 알고 싶어하는 사용자에게 유용할 수 있으므로 여기에 남겨둡니다.)

루트의 경우 기본 프롬프트는 무색입니다./etc/profile— 또는 오히려 /etc/bash.bashrc— 매우 간단한 힌트를 정의합니다.

# set a fancy prompt (non-color, overwrite the one in /etc/profile)
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

그리고root기본값은.bashrc재정의하지 않고 다음을 수행합니다.

# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022

바라보다데비안 시스템에서 /root/.bashrc 및 /root/.profile은 어디에서 왔습니까?자세한 내용은.

답변3

이것이 "데비안에서 루트 쉘에 색조를 지정하는 방법"에 대한 검색의 최상위 결과이므로 여기에 솔루션을 게시하겠습니다. /root/.bashrc파일을 복사하고 덮어쓰십시오 /etc/skel/bashrc.

이 파일은 설치된 파일보다 훨씬 강력하며 root시스템에 생성된 새 사용자를 위한 기본 파일이기도 합니다.

아래는 제가 수년에 걸쳐 조정한 ls 색상의 발췌입니다.

alias la='LS_COLORS="mh=1;37" ls -A'
alias l='LS_COLORS="mh=1;37" ls -CF'
alias ll='LC_COLLATE=C LS_COLORS="mh=1;37" ls -lA --si --group-directories-first'

답변4

결국 @daniel-sokolowski의 제안을 받아 살펴보게 되었습니다 /etc/skel/.bashrc.

그러나 bash 문서에 따르면 [ -z "$PS1" ]테스트는 대화형 쉘과 비대화형 쉘을 구별하는 일반적인 방법이라는 점에 유의하는 것이 중요합니다.

이렇게 추가하면

# part from /etc/skel/.bashrc
...
if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

모든 종류의 셸을 노출하면 PS1=다음과 같은 비대화형 명령이 중단될 수 있습니다.

ssh your-server ls -la
bash completion on: scp ssh://foo:/bar/<TAB>
vim scp://your-server//some/file

이 명령은 대화형 셸의 일부인 스크립트에서 원치 않는 stdout이 발생하면 중단됩니다.

이 방법의 완전한 솔루션은 [ ! -z "$PS1" ]테스트 에서 블록을 래핑하는 것입니다.

...
if [ ! -z "$PS1" ]; then
    if [ "$color_prompt" = yes ]; then
        PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    else
        PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    fi
fi
unset color_prompt force_color_prompt

관련 정보