How to organise overflowing config files and folders in the home directory and beyond!

bashhomebrewunixzsh

The Context:

I'm a long-time macOS user who has spent many years dabbling here and there with the *nix side of Apple life since the first iteration of OS X (10.0) originally shipped.

Recently, I find myself compelled to dig a little deeper after deciding to embark on a journey of self education in all things scripting/programming/system administration. Thankfully there exist fantastic tools such as Homebrew, amongst others, to make the management of this macOS shadow-land far more straightforward, but sometimes it's neccessary to work outside of these self-contained ecosystems.

The Core Problem:

  • I find myself gathering a large quantity of configuration-related files and folders in my home directory. This unwiedly & miscellaneous collection seems sub-optimal and I'm wondering if the more experienced have some "best practice" guidance for this situation – maybe even a decicated utility or two?
  • I'm keenly aware that the ecosystem of *nix software is extremely sensitive to directory/path structure; and minor changes can have major side effects that aren't immediately obvious,resulting in increasingly time-costly troubleshooting and conflict-resolution in the future – particularly when the problem at hand isn't recent and "fresh in the mind".

Any suggestions/pointers/links or path/environment variables welcome – thanks!

Best Answer

These tools expect their .foorc file to reside in ~ so there is no easy way to "organize" this better (besides not using the -a of ls so you don't always see them :-)) unless you want to compile everything from a (appropriately) modified source yourself.

Some tools use an environment variable to read their configuration from a custom location. This is tool-specific though, you need to consult the man page to see whether this is an option.

Some people use git or similar tools to easily share configurations between systems (and also as a way to have access to old versions), see (among a ton of other sources) these links.

PS: This is a rather broad answer to a broad question. If you want specific advice for a specific tool, please ask a new question including the relevant details