Il comportamento del programma dovrebbe essere modificato utilizzando un file di configurazione o variabili ambientali?

3

Mi riferisco principalmente alle applicazioni a riga di comando * nix, in cui si desidera modificare permanentemente il comportamento dai valori predefiniti.

Le variabili ambientali sono facilmente comprensibili e implementate, in genere richiedono all'utente di modificare il ~/.bashrc per una modifica permanente. Tuttavia, la collisione nello spazio dei nomi potrebbe essere un problema (ma improbabile se stai attento)

D'altra parte, molti programmi usano ~/.programrc config files.

È semplicemente verbosità? Se il tuo programma ha solo 2 impostazioni di configurazione, allora una semplice export APP_SETTING=1 funziona perfettamente. Tuttavia, se stai iniziando a offrire 5+ opzioni, dovrebbe essere il momento di iniziare a guardare in un file di configurazione?

    
posta wting 10.05.2012 - 11:27
fonte

2 risposte

5

Ci sono molte altre pressioni:

  • La scrittura di un file di configurazione richiede il permesso di scrittura sul file system (in effetti richiede un file system in primo luogo!). Le variabili di ambiente possono essere impostate anche se si sta eseguendo un sistema di ripristino da un CD.

  • Le variabili di ambiente possono essere impostate rapidamente e temporaneamente solo per una chiamata, che è molto meglio per l'uso in piccoli script di shell. (Riscrivere e riscrivere un file di configurazione rischia di distruggere le impostazioni originali se il processo non termina correttamente. I valori temporanei muoiono automaticamente.)

  • Un file di configurazione può essere passato facilmente a un altro utente o preinstallato con una distribuzione. Dire a qualcuno come usare le variabili d'ambiente è molto più difficile. Non crederesti quanto sia più difficile convincere le persone normali a digitare CDG_VERBOSITY=5 cdg correttamente quindi solo cdg .

  • Le variabili d'ambiente possono o non possono essere ereditate correttamente se il tuo programma avvia il lavoro su altri processi. Un file di configurazione è sempre lì.

  • Ci possono essere limiti sorprendentemente bassi sulla dimensione dell'ambiente che può essere passato a un processo su alcuni sistemi. Il file system è molto, molto più indulgente.

  • Se hai bisogno di cambiare le impostazioni dopo l'avvio del programma, dire a un processo di rileggere il suo file di configurazione è un idioma ben noto. Cambiare l'ambiente di un processo in esecuzione può essere più complicato.

  • La lettura di un file di configurazione colpisce il disco, che è molto più lento della lettura dall'ambiente. Un file di configurazione sarebbe grossolanamente inappropriato per qualcosa come grep , che viene solitamente invocato su dati che sono interamente in memoria.

risposta data 10.05.2012 - 11:50
fonte
0

File di configurazione (per mantenere un registro delle modifiche alla configurazione), sovrascritte da variabili di ambiente (facoltative) (a fini di modifiche temporanee in ambienti non controllati).

    
risposta data 12.06.2012 - 19:23
fonte