es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo “cachear” los efectos de Intel OneAPI setvars?

La distribución OneAPI de Intel (que incluye muchos componentes como ICC) tiene un script llamado “setvars.sh”, que verifica la presencia de varias cosas, luego ejecuta los scripts individuales de los componentes para establecer las variables de entorno. Se tarda más de un segundo en ejecutarse e imprime cosas en la terminal.

Ahora, estoy dispuesto a ejecutarlo una vez, pero ciertamente no quiero ejecutarlo cada vez que inicio una terminal. ¿Cómo puedo “cachear” sus resultados, en forma de los cambios que agrega (¿o elimina?) de mi entorno antes de su invocación? Para que solo pueda cargar un script con:

export PATH="lo-que-sea:$PATH"
export TBBROOT="lo-que-sea"

etc. etc.

?

Naturalmente, tendría que volver a ejecutar setvars.sh si mi configuración del sistema cambia de alguna manera, pero no tengo problema con eso.


PD: Hay que decirlo: OneAPI es la epitome de un nombre mal elegido. Es la API que nunca va a ser utilizada por nadie más que nosotros, una de las muchas.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para cachear los resultados de setvars.sh, puedes crear un script que llame a setvars.sh y capture los cambios que realiza en las variables de entorno. Luego puedes guardar la diferencia en un archivo y cargar ese archivo cada vez que inicies una terminal. Aquí tienes un ejemplo de script que demuestra este enfoque:

    #!/bin/sh
    
    # Ejecutar setvars.sh y capturar los cambios en las variables de entorno
    tmpfile=$(mktemp)
    setvars.sh 2>&1 | tee $tmpfile
    
    # Extraer los cambios en las variables de entorno del resultado
    delta=$(grep -E '^export ' $tmpfile)
    
    # Guardar la diferencia en un archivo para cargarlo posteriormente
    cachefile="/ruta/al/archivo/de/caché"
    echo "$delta" > $cachefile
    
    # Limpiar el archivo temporal
    rm $tmpfile
    

    Luego puedes cargar el archivo de caché en tu script de inicio de la terminal (~/.bashrc, ~/.zshrc, etc.):

    if [ -f "/ruta/al/archivo/de/caché" ]; then
        # Cargar la diferencia en las variables de entorno desde la caché
        . /ruta/al/archivo/de/caché
    fi
    

    De esta manera, los cambios en las variables de entorno realizados por setvars.sh se ejecutan solo una vez y la diferencia se guarda en caché para su uso futuro. Si la configuración del sistema cambia, simplemente vuelve a ejecutar el script de caché para actualizar la diferencia en el archivo de caché.

Comments are closed.