I'm referring to *nix command line applications primarily, where you want to permanently modify the behavior from defaults.
Environmental variables are easily understood and implemented, usually requiring the user to modify their ~/.bashrc
for a permanent change. However, namespace collision might be a problem (but unlikely if you're careful).
On the other hand, a lot of programs use ~/.programrc
config files.
Is it simply verbosity? If your program only has 2 configuration settings, then a simple export APP_SETTING=1
works just fine. However if you're starting to offer 5+ options then it should be time to start looking into a config file?