¿Cuál es la forma recomendada de guardar los datos de configuración del usuario en Unix/Linux? Mi lenguaje de programación es C++. Los datos de configuración se mantendrán en formato XML/texto/binario, no tengo ningún problema con el manejo de dichos archivos. Quiero saber dónde puedo guardarlos. Por ejemplo, en la configuración del sistema operativo Windows, los datos pueden mantenerse en el Registro (antigua) o en el directorio de datos de la aplicación del usuario. ¿Qué hay de Linux? Necesito acceso de lectura/escritura a los archivos de configuración.Datos de configuración del programa en Unix/Linux
Respuesta
El concepto del registro es peculiar de Windows y Microsoft una vez admitido a ella siendo mal concebida (ver this, this, this, this (see #2) y this).
En Unix y Linux, la configuración para programas en todo el sistema está en/etc o tal vez en un subdirectorio específico de la aplicación.
Los datos de configuración del usuario se guardan en el directorio de inicio del usuario en un formato de archivo de texto oculto o en un directorio oculto específico de la aplicación en el directorio de inicio del usuario. La forma correcta de hacer referencia al directorio de inicio es a través de la variable de entorno HOME
. Los archivos y directorios ocultos se crean haciendo .
el primer carácter del nombre.
Ejemplos para la configuración de todo el sistema es /etc/wgetrc
y /etc/ssh/
. Los ejemplos de datos por usuario son $HOME/.bashrc
y $HOME/.mozilla/
.
Eso depende un poco de su sabor de Linux pero como regla general la mayoría de los programas tienen la configuración predeterminada del sistema en algún lugar en/etc con archivos .config en su directorio principal que pueden anular los valores predeterminados en el directorio/etc.
Gran punto .config debe ser. [Nombre del archivo de configuración]
Es posible que desee aclarar que con ".config" en realidad quiere decir un archivo cuyo nombre comienza con ".", * Not * un archivo con una extensión ".config". Los "." el prefijo es mantener los archivos "ocultos" por defecto. Los programas que tienen un grupo de archivos de configuración alguna vez tendrán un directorio ".config", con los archivos allí. Además, las aplicaciones de Unix old-skool tienden a usar el nombre ". [Appname] rc" para su archivo/directorio de configuración. –
El XDG Base Directorio Especificación especifica dónde configuración y otros archivos se deben almacenar en Linux y otros sistemas operativos basados en X:
http://freedesktop.org/wiki/Specifications/basedir-spec
Ésta es la manera moderna, y con el tiempo puede reducir el desorden dotfile en el directorio de inicio del usuario típico.
Los archivos de puntos son la solución clásica de Unix. Si quieres ocuparte de leer/escribir todo tú mismo, ve por ello.
Sin embargo, la mayoría de los programas modernos que uso han usado GConf para almacenar preferencias. Hace mucho más fácil, tanto como desarrollador y como usuario (y aparentemente como administrador, pero no tengo experiencia allí).
Buen punto sobre GConf, gracias. En mi caso, tengo un código multiplataforma para administrar archivos de configuración XML, que ya se está ejecutando en Windows. Habiendo hecho esto, necesito agregar un código específico de la plataforma para seleccionar la ruta de los archivos de configuración. –
http://api.kde.org/4.0-api/kdelibs-apidocs/kdecore/html/classKConfig.html para el esquema de configuración del * otro * escritorio popular. – ephemient
- 1. ¿Dónde almacenar la configuración del programa en lugar de HKEY_LOCAL_MACHINE?
- 2. Configuración de datos del cuerpo de WebRequest
- 3. Parse $ .extend configuración del atributo de datos
- 4. Ubicación de la configuración en el programa de Unix
- 5. Configuración del color para un punto de datos individual
- 6. ¿Cómo diseñar un programa con muchas opciones de configuración?
- 7. Configuración del módulo y configuración del diseño en zend framework
- 8. Abra los archivos de configuración de otro programa
- 9. Incrustar datos en un programa C++
- 10. hay una manera de imprimir el archivo de configuración para aumentar las opciones del programa
- 11. El archivo de configuración ha sido cambiado por otro programa
- 12. Python setup.py: solicitar datos de configuración durante la configuración
- 13. Eficiencia del programa
- 14. Programa para graficar datos MySQL
- 15. Tiempo de ejecución del programa
- 16. Choques simples del programa
- 17. compilación del programa java
- 18. Configuración del directorio del almacén de sqlite
- 19. Rails Configuración del motor
- 20. Licencia del programa Prism
- 21. Iniciar un agente de Java después del inicio del programa
- 22. Configuración del objetivo del comando en XAML
- 23. Cómo ajustar Tomcat 5.5 JVM Configuración de memoria sin usar el programa de configuración
- 24. ¿Cómo se leen los datos binarios a través del terminal en serie en el programa C?
- 25. Llamada de la API de Android para determinar la configuración del usuario "Datos habilitados"
- 26. Configuración del tamaño de papel en FPDF
- 27. Configuración del nombre de usuario en TortoiseHG
- 28. Windows Live Mesh ofrece sincronización para la configuración del programa; ¿Puedo agregar soporte para mi software?
- 29. ventana del navegador abierta del programa Java
- 30. ¿Cómo salgo del programa en try/except?
No debe confiar en la variable de entorno HOME. Como estamos hablando de C++ que puede hacer llamadas al sistema, debe hacer 'struct passwd * pw = getpwuid (getuid());' (o 'getpwuid_r' si necesita seguridad de subprocesos) y luego usar el valor de' pw-> pw_dir' –
Buena sugerencia. Nunca tuve un problema al usar $ HOME. Noté que muchos programas deben funcionar de esa manera también, ya que a veces he reemplazado a HOME con resultados útiles y esperados. – wallyk
Gracias, creo que seguiré esto.Por cierto, ¿puedo usar "~" para el directorio de inicio en el programa? –