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.
~/.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
).But what about .local/, or .appname/? It’s just a mess
~/.local
is the non-root version of/usr
. By.appname
do 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
.Is all of that defined in a standard somewhere?
I usually just use
$HOME/bin
and$HOME/opt
for all my local user’s program needs, but would be interested if there is an actual defined standard for this.Configuration for
root
is in/root/
, that is,root
’s home directory./etc
is 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.
I agree. Usually I’m referring to a user installed local application. So if the executable is in your home directory likely it’s in the same directory as the exe.
Even then you shouldn’t be writing where the executable is. I don’t want spurious files where my scripts etc. are.
Just use XDG dirs.
Well good because a program shouldn’t be writing to its config file either.