dircolors myfile은 LS_COLORS를 화면의 빈 문자열로 설정합니다.

dircolors myfile은 LS_COLORS를 화면의 빈 문자열로 설정합니다.

내 .bashrc에는 색 구성표를 설정하는 줄이 있습니다.

eval $(dircolors colorfile) 

이는 예상대로 작동하며 "colorfile"에 의해 생성된 올바른 문자열로 LS_COLORS를 설정합니다.

screen을 사용하면 bashrc 파일을 다시 읽지만 색상이 손실됩니다. 테스트하기 위해 dircolors colorfile화면의 명령줄에서 실행하고

LS_COLORS='';
export LS_COLORS

이 문제는 꽤 쉽게 고칠 수 있지만 dircolor가 화면과 화면 밖에서 다르게 동작하는 원인이 무엇인지 궁금합니다. 나는 단지 맹목적으로 파일을 구문 분석하고 문자열을 출력한다고 생각했습니다. 하지만 일부 환경 변수 등을 확인해야 합니까?

어떤 단서가 있나요? 다음은 몇 가지 추가 정보입니다. 내 .screenrc는 비어 있고 gnome-terminal을 사용하고 있습니다. Dircolors 버전은 8.25입니다.

나는 이 which명령을 사용하여 두 개의 서로 다른 바이너리를 사용하고 있지 않은지 확인합니다(사용하지 않습니다). $?의 가치를 확인해 봤습니다. dircolors를 실행한 후 두 경우 모두 0입니다.

답변1

화면 내의 값이 $TERM다릅니다. 따라서 colorfile파일은 아마도 다음으로 끝나야 합니다.

TERM screen*
TERM xterm*

답변2

그러나 이전 버전에서는 dircolorsTERM 매개변수에 대한 이름 글로빙을 지원하지 않습니다. 예를 들어 xterm*no인 경우 지원하려는 각 터미널 유형을 명시적으로 나열해야 합니다(한 줄에 하나씩).

TERM xterm
TERM xterm-16color
TERM xterm-256color
TERM xterm-color
etc.

귀하의 버전이 이름 글로빙을 지원하는지 빠르게 확인하려면 dircolors다음을 수행하십시오.

dircolors --print-database | grep TERM

용어 목록에서 하나 이상의 와일드카드 이름을 확인하세요. 예를 들면 다음과 같습니다.

TERM *color*
TERM xterm*

*color*용어 목록에 와일드카드 이름(예: , 등) 이 표시되지 않으면 xterm*해당 버전이 dircolors이름 글로빙을 지원하지 않는 것일 수 있습니다.

관련 정보