I wholeheartedly agree with this blog post. I believe someone on here yesterday was asking about config file locations and setting them manually. This is in the same vein. I can’t tell you how many times a command line method for discovering the location of a config file would have saved me 30 minutes of googling.


If it’s not in /etc it should be in the directory the exe file is located.
~/.configis the non-root version of/etcthese days. But you just have to know that, which isn’t ideal.But what about .local/, or .appname/? It’s just a mess
~/.localis the non-root version of/usr. By.appnamedo you just mean a folder that a specific app made in your home for itself? Yeah, I never condone that. imo that’s just a badly behaving app. It should move that folder into~/.config.If you are a developer, please take a look at the XDG Base Directory Specification and try to follow it, users will be very grateful.
Short summary: Look for
$XDG_CONFIG_HOMEfor configs and$XDG_STATE_HOMEfor state. If they aren’t available, use the defaults (./configand.local/share).Configuration for
rootis in/root/, that is,root’s home directory./etcis for system configuration, different thing.Certainly not. Nothing should write to /usr/bin except for the package manager in FHS distros and some distros binary directories aren’t writable at all.
Well good because a program shouldn’t be writing to its config file either.