내 .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
그러나 이전 버전에서는 dircolors
TERM 매개변수에 대한 이름 글로빙을 지원하지 않습니다. 예를 들어 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
이름 글로빙을 지원하지 않는 것일 수 있습니다.