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.
Start your application / program with “strace” and see all the files it opens.
Also run “lsof” on a running process to see what files it has open.
I doubt that’s a linux problem. All apps store config in /etc, ~/.*rc or ~/.config
Everything else should be considered a bug (looking at you, systemd!)
If it’s not in /etc it should be in the directory the exe file is located.
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.
~/.config
is the non-root version of/etc
these days. But you just have to know that, which isn’t ideal.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_HOME
for configs and$XDG_STATE_HOME
for state. If they aren’t available, use the defaults (./config
and.local/share
).
I’d take it a step further and say that all programs should be completely self-contained in one folder.
This is the big thing I miss from my “pre-Unix” Mac days. In OS9 and earlier, apps were self contained, and didn’t spread their garbage everywhere. You deleted an app, you deleted all the app. Granted, there was a tradeoff (the parade of conflicting control panels and extensions you had to manually diagnose when your machine went sideways) but I never understood why in the Windows and Linux worlds devs would code so sloppily. Who told that dev my Documents folder is where their nonsense needs to go? That Documents folder is for my use, not theirs.
Still salty after all these years
I use linux and this annoys me to, every program just spams my home directory with config files, even though .config and .cache exist and are the standard
Set XDG_CONFIG_HOME=<path> in your environment and most tools follow it
I have, unfortunatly a lot of programs dont.
Right, forgot. And the specific workaround.