어떤 dircolors
영향을 미치나요? 명령 에만 해당되나요 ls
? dircolors
정의하기 전에 호출 해야 합니까 alias ls='ls --color'
?
답변1
dircolors
셸에서 해석된 코드를 출력합니다. 옵션이 있든 없든 -b
이는 ksh, zsh 또는 bash와 같은 Bourne과 유사한 쉘과 , 즉 또는 가 sh
있는 모든 최신 쉘 은 다른 쉘²을 지원하지 않음을 의미합니다.-c
csh
tcsh
출력 코드는 options 와 함께 호출될 때 색상이 지정된 출력을 사용자 정의하기 $LS_COLORS
위해 GNU 구현에서 쿼리되는 환경 변수를 설정하도록 셸에 지시합니다 .ls
--color
Bourne²와 같은 쉘에서는 다음을 수행합니다.
eval "$(dircolors -b)"
평가 출력dircolors
(t)csh에서:
eval "`dircolors -c`"
이 $LS_COLORS
변수는 ls --color
호출 전에 설정해야 하지만 사용된 별칭이나 함수 정의와는 독립적입니다 ls
. 그래서:
alias ls 'ls --color' # (t)csh
alias ls='ls --color' # Korn-like shells
ls() command ls --color "$@" # most Bourne-like shells
ls() { command ls --color "$@"; } # all Bourne-like shells
쌍 호출 전후에 배치할 수 있으며 eval
차이가 없습니다.
환경을 업데이트하므로 해당 eval
줄을 ~/.profile
/ ~/.login
(또는 로그인 셸에 대한 동등한 로그인 세션 사용자 정의 파일)에 넣으면 로그인 세션당 한 번만 설정되고 별칭/함수는 셸 사용자 정의 파일( ~/.zshrc
, ~/.cshrc
, ~/.bashrc
...).
어쨌든, 사용하지 않으면 dircolors
여전히 기본 색상인 색상을 얻게 됩니다. dircolors
사용자 정의 파일 없이 사용 하면 다른 기본값이 적용됩니다.
다음을 수행하여 이러한 기본값을 편집할 수 있습니다.
dircolors -p > ~/.config/dircolors
다음 명령을 사용하여 파일을 편집하고 셸 시작 파일의 줄을 변경합니다.
eval "$(dircolors ~/.config/dircolors)"
1 다른 쉘에 대한 솔루션은 많지만, 해결 방법은 본인에게 달려 있습니다. 예를 들어 최신 fish
버전의 경우 다음을 수행할 수 있습니다.set -x LS_COLORS "$(sh -c "$(dircolors -b)"'; printf %s "$LS_COLORS"')"
² Bourne-shell 자체는 제외 $(...)
하지만 Bourne 셸은 더 이상 사용되지 않으며 이에 `...`
상응하는 항목은 더 이상 사용되지 않습니다.