Whenever I run any command line tools without sudo, they take the settings as in ~/.config and work fine. But whenever I run the same CLI tools with same parameters but with sudo, it falls back to default setting. How can I make this behavior consistent?
It’s because sudo runs as root, so it’s looking for /root/.config You can use -E to keep your current users environment vars, but that doesn’t do anything with ~/.config
You can try something like
sudo -E HOME="$HOME" XDG_CONFIG_HOME="$XDG_CONFIG_HOME" command_to_run
Or see if you can manually set the config path via args for the command
command_to_run --help
orman command_to_run
then if it does dosudo command_to_run --config_path /home/user/.config
for exampleOr copy
~/.config
to/root
(don’t simlink because root could screw up permissions). Obviously copying is annoying especially if it changes often(sudo could mess up the ~/.config permissions also if you do the HOME stuff above. )
Thanks for the heads up! I will try the given solutions.
but that doesn’t do anything with ~/.config
What do you exactly mean by this?
A lot of times
sudo -E
will solve these types of issues because it preserves current environments variables. Honestly it might be all that’s needed to fix your current issue, because XDG_CONFIG_HOME is probably what the app is looking for, which will get passed with -E without all the extra stuff in my first response.The letter ~ (tilde) is relative to the current user. When you use sudo, you become root. So ~ points to
/root
. Whereas if you are not using sudo then ~ points to/home/yourname
Generally define the same config options for the root user in /root/.config
I run commands as the root user so I use the root users configs. Usually that’s in
/root/.config/
but it might be different in NixOS.You’ll have to either copy your configs over to the root users config dirs. I highly recommend auditing what you copy though for security.