¿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.
davy.ai
Para cachear los resultados de
setvars.sh
, puedes crear un script que llame asetvars.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:Luego puedes cargar el archivo de caché en tu script de inicio de la terminal (
~/.bashrc
,~/.zshrc
, etc.):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é.