View previous topic :: View next topic |
Author |
Message |
curmudgeon Veteran
Joined: 08 Aug 2003 Posts: 1741
|
Posted: Sun Apr 03, 2016 2:38 am Post subject: How is LS_COLORS being initialized? |
|
|
This is another in the (long) list of "weird things I don't understand."
Have "always" had an alias in my .bashrc to add "--color=auto" the ls command. What I have failed to notice (literally for years) is that it was only working for certain types of entries. In particular, I was seeing directories blue, pipes brown, sockets pink, and SOME text files (.bin, .py) green. But other text files (such as .log were not colored, and I wasn't seeing any red for archives or pink for media files). I had just assumed that I would be getting the behavior listed in /etc/DIR_COLORS for each extension.
Also, the output of the set command includes:
Code: |
ls_colors='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.pdf=00;32:*.ps=00;32:*.txt=00;32:*.patch=00;32:*.diff=00;32:*.log=00;32:*.tex=00;32:*.doc=00;32:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:'
|
It was pretty obvious that ls was not using the ls_colors variable.
After playing around for a while, I added the following line to /etc/DIR_COLORS:
I logged out and logged back in changing nothing else. Then I noticed that I now have an LS_COLORS in my environment (which is the same as ls_colors, except that "*.foo=00;32:" has been tacked on to the end, and now ALL of the extensions are correctly colored (log files, archives, media files).
That leads to some obvious questions:
1. What is the purpose of ls_colors (it seems to be ignored completely, and thus has no value)?
2. Where are the "default" (with no LS_COLORS variable in the environment) color rules coming from?
3. What is causing LS_COLORS to be set (and why wasn't it being set before I altered /etc/DIR_COLORS)? |
|
Back to top |
|
|
Ant P. Watchman
Joined: 18 Apr 2009 Posts: 6920
|
Posted: Sun Apr 03, 2016 3:44 pm Post subject: |
|
|
It's set in /etc/bash/bashrc. Recently (within the past few weeks) someone tried to make that code "clever", and broke the default case for everyone. Having a ~/.dir_colors or /etc/DIR_COLORS file, which is what you did, forces it to work again. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|