Pregunta:
Tengo un programa que almacena su configuración en ~/.config/myprogram
que uso tanto de forma interactiva como con un sistema de cola por lotes. Cuando se ejecuta de forma interactiva, quiero que este programa use mis archivos de configuración (y lo hace). Pero cuando se ejecuta en modo por lotes, los archivos de configuración no son necesarios porque especifico opciones de línea de comandos que sobrescriben todas las configuraciones relevantes. Además, acceder a los archivos de configuración a través de la red aumenta el tiempo de inicio del programa en varios segundos; si los archivos no existen, el programa se inicia mucho más rápido (dado que cada trabajo solo toma alrededor de un minuto, esto tiene un impacto significativo en el rendimiento del trabajo por lotes). Pero debido a que también utilizo el programa de forma interactiva, no quiero mover / eliminar mis archivos de configuración todo el tiempo. Dependiendo de cuándo se programen mis trabajos por lotes en el clúster (según el uso de otros usuarios), es posible que desee utilizar el programa de forma interactiva y como parte de un trabajo por lotes al mismo tiempo.
(Aparte: que el rendimiento del archivo de red sea tan lento probablemente sea un error, pero solo soy un usuario del clúster, por lo que solo puedo solucionarlo, no solucionarlo).
Podría crear una versión del programa que no lea los archivos de configuración (o que tenga una opción de línea de comandos para no hacerlo) para uso por lotes, pero el entorno de compilación de este programa está mal diseñado y es difícil de configurar. Preferiría usar los binarios instalados a través del administrador de paquetes de mi sistema.
¿Cómo puedo engañar a instancias particulares de este programa para que finjan que mis archivos de configuración no existen (sin modificar el programa)? Espero un contenedor de la forma pretendfiledoesntexist ~/.config/myprogram -- myprogram --various-options...
, pero estoy abierto a otras soluciones.
Respuesta:
Ese programa probablemente resuelve la ruta a ese archivo desde $HOME/.config/myprogram
. Entonces podría decirle que su directorio de inicio está en otro lugar, como:
HOME=/nowhere your-program
Ahora, tal vez su programa necesite algún otro recurso en su directorio personal. Si sabe cuáles son, puede preparar una casa falsa para su programa con enlaces al recurso que necesita allí.
mkdir -p ~/myprogram-home/.config
ln -s ~/.Xauthority ~/myprogram-home/
...
HOME=~/myprogram-home myprogram