ls 명령의 색상을 설정하기 위해 .bashrc를 확인하다가 이것을 발견했습니다.
export SHELL='/bin/bash'
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
dircolors
with 대신 사용하면 문제가 있나요 eval
? 차이점은 무엇입니까?
답변1
작동하지도 작동하지도 않습니다 eval dircolors
.dircolors
당신에게 필요한 것은:
eval "$(dircolors)"
(또는 고대 형태 eval "`dircolors`"
)
즉, 평가해야 할 결과입니다 dircolors
. dircolors
셸에서 평가된 출력 코드는 다음과 같습니다.
LS_COLORS='...'
export LS_COLORS
평가하려는 코드입니다. eval dircolors
마찬가지로 출력이 리디렉션되지 않는 경우에만 실행 dircolors
되므로 dircolors
위의 셸 코드는 결국 표시되고 어떤 셸에서도 평가되지 않습니다.
또한 쉘 구문에 옵션 목록을 $LS_OPTIONS
포함시키려는 경우(예: this 와 같은 것을 허용 ) 다음과 같이 정의해야 합니다.ls
--exclude='*~'
ls() {
eval 'command ls '"$LS_OPTIONS"' "$@"'
}
또는 다음을 사용하여 zsh
:
alias ls='ls "${(Q@)${(z)LS_OPTIONS}}"'
공백으로 구분된 옵션 목록을 포함하려면 bash 4.4+를 사용하세요.
ls() {
local IFS=' '
local -
set -o noglob
command ls $LS_OPTIONS "$@"
}
또는 다음을 사용하여 zsh
:
alias ls='ls ${(s: :)LS_OPTIONS}'