별 것도 아닌 걸 가지고 무려 이틀쯤 고생을 했다. 소요된 시간이 이틀이고, 시종을 따지면 수요일 저녁에 시작하여, 월요일 밤에 끝났으니.. (물론, 목/금/토/일엔 건드리진 않았지만, 머릿 속 한 구석에 남아있었으므로..)
일단, 고생을 하게된 배경(근거, 원인, 아니.. 원흉!!)을 기록으로 남겨둔다. (즉, 내 잘못은 아니고, 설치법을 제대로 올리지 못한 제작자에게 책임을 돌리고 싶다. 물론, 저걸 깨닫지 못한 내 잘못도 크긴 하지만..)

아래 쪽엔 제대로 나와 있지만, 위 쪽, 복사가 가능한 코드는 이렇게 돼 있다.
test -r "~/.dir_colors" && eval $(dircolors ~/.dir_colors)
이게 문제였다. 이게!!!! 아 짜증나.
원인은? 한가지.
겹따옴표.
이게 있으면 zsh/bash 등등에서 제대로 작동하지 않는다. (물론, ~/.dir_colors
파일은 있다.)
$ test -r "~/.dir_colors" && echo "있어요" --> 아무 결과 없음!
이 결과로 ‘있어요’가 나와야겠지만, 아무 것도 나오지 않는다.
이걸 깨닫기까지, 정말로 정말로 개 뻘짓을 했다. 문제는, 해답은 헤매기 시작한 초기에 봤었다는데 있는데..
아.. 짜증나.
하지만, 부작용(?)이라기 보다는 Side Effect 로, eval
명령 공부는 제대로 했다.
결론을 말하자면, 이렇게 해야 제대로 작동한다. (물론, macOS 에선 gnu coreutils 등등이 설치돼 있어야 한다.)
test -r ~/.dir_colors && eval $(dircolors ~/.dir_colors)
정 겹따옴표를 쓰고 싶다면, ~ 대신 $HOME 을 쓴다.
test -r "$HOME/.dir_colors" && eval $(dircolors ~/.dir_colors)
또한, dircolors
명령도 잘 못 이해하고 있었다.
이 명령은 directory color 를 설정해주지는 않는다. 이 명령을 man page 로 보면 이렇다.
DESCRIPTION Output commands to set the LS_COLORS environment variable.
Output Commands.. 라 돼 있다. Set 이 아니다. 따라서, Nord Dircolors Theme 을 dircolors 로 실행하면 다음과 같다.
$ dircolors ~/.dir_colors LS_COLORS='no=00:rs=0:fi=00:di=01;34:ln=36:mh=04;36:pi=04;01;36:so=04;33:do=04;01;36:bd=01;33:cd=33:or=31:mi=01;37;41:ex=01;36:su=01;04;37:sg=01;04;37:ca=01;37:tw=01;37;44:ow=01;04;34:st=04;37;44:*.7z=01;32:*.ace=01;32:*.alz=01;32:*.arc=01;32:*.arj=01;32:*.bz=01;32:*.bz2=01;32:*.cab=01;32:*.cpio=01;32:*.deb=01;32:*.dz=01;32:*.ear=01;32:*.gz=01;32:*.jar=01;32:*.lha=01;32:*.lrz=01;32:*.lz=01;32:*.lz4=01;32:*.lzh=01;32:*.lzma=01;32:*.lzo=01;32:*.rar=01;32:*.rpm=01;32:*.rz=01;32:*.sar=01;32:*.t7z=01;32:*.tar=01;32:*.taz=01;32:*.tbz=01;32:*.tbz2=01;32:*.tgz=01;32:*.tlz=01;32:*.txz=01;32:*.tz=01;32:*.tzo=01;32:*.tzst=01;32:*.war=01;32:*.xz=01;32:*.z=01;32:*.Z=01;32:*.zip=01;32:*.zoo=01;32:*.zst=01;32:*.aac=32:*.au=32:*.flac=32:*.m4a=32:*.mid=32:*.midi=32:*.mka=32:*.mp3=32:*.mpa=32:*.mpeg=32:*.mpg=32:*.ogg=32:*.opus=32:*.ra=32:*.wav=32:*.3des=01;35:*.aes=01;35:*.gpg=01;35:*.pgp=01;35:*.doc=32:*.docx=32:*.dot=32:*.odg=32:*.odp=32:*.ods=32:*.odt=32:*.otg=32:*.otp=32:*.ots=32:*.ott=32:*.pdf=32:*.ppt=32:*.pptx=32:*.xls=32:*.xlsx=32:*.app=01;36:*.bat=01;36:*.btm=01;36:*.cmd=01;36:*.com=01;36:*.exe=01;36:*.reg=01;36:*~=02;37:*.bak=02;37:*.BAK=02;37:*.log=02;37:*.log=02;37:*.old=02;37:*.OLD=02;37:*.orig=02;37:*.ORIG=02;37:*.swo=02;37:*.swp=02;37:*.bmp=32:*.cgm=32:*.dl=32:*.dvi=32:*.emf=32:*.eps=32:*.gif=32:*.jpeg=32:*.jpg=32:*.JPG=32:*.mng=32:*.pbm=32:*.pcx=32:*.pgm=32:*.png=32:*.PNG=32:*.ppm=32:*.pps=32:*.ppsx=32:*.ps=32:*.svg=32:*.svgz=32:*.tga=32:*.tif=32:*.tiff=32:*.xbm=32:*.xcf=32:*.xpm=32:*.xwd=32:*.xwd=32:*.yuv=32:*.anx=32:*.asf=32:*.avi=32:*.axv=32:*.flc=32:*.fli=32:*.flv=32:*.gl=32:*.m2v=32:*.m4v=32:*.mkv=32:*.mov=32:*.MOV=32:*.mp4=32:*.mpeg=32:*.mpg=32:*.nuv=32:*.ogm=32:*.ogv=32:*.ogx=32:*.qt=32:*.rm=32:*.rmvb=32:*.swf=32:*.vob=32:*.webm=32:*.wmv=32:'; export LS_COLORS
다시 말하면, dircolors 는 그냥 문자열만 출력해줄 뿐, 실제로 환경변수(LS_COLORS
)를 생성하고, export
해주진 않는다. 이 문자열들을 실제로 명령화하려면 eval 의 힘을 빌려야 한다.
그야말로, 오랜만에 헛삽질.
그래도 아주 약간(콧털만큼) 보람은 있었네.