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";

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .