LSCOLORS and CLICOLOR active by default and unset
Running zsh out of the box ls -G
produced a colored list with the default colored values. But when I echo
, both $LSCOLORS
and $CLICOLOR
, I receive an empty response. Reviewing printenv
or set
also do not show these variables.
Unlike other questions asking how to change LSCOLORS
and CLICOLOR
, I want to ask where are the default options set, even though these environment variables are not set (in a way I can find)? Is there a way to view the background process, of ls
for example, within terminal to trace these back to an answer?
The manual page for ls(1)
documents the defaults:
The default is "exfxcxdxbxegedabagacad", i.e. blue foreground and default background for regular directories, black foreground and red background for setuid executables, etc.
Those defaults are compiled into the ls
binary - you can confirm this by browsing the source code. Note this definition in print.c:
static const char *defcolors = "exfxcxdxbxegedabagacad";