Tengo dos scripts de shell que me gustaría invocar desde un programa C. Me gustaría que las variables de shell establecidas en el primer script sean visibles en el segundo. Esto es lo que se vería así:guardar y restaurar variables de shell
a.sh:
var=blah
<save vars>
b.sh:
<restore vars>
echo $var
El mejor que he encontrado hasta el momento es una variante de "set>/tmp/vars "para guardar las variables y" eval $ (cat/tmp/vars) "para restaurarlas. El "eval" se ahoga cuando intenta restaurar una variable de solo lectura, así que necesito agotarlos. Una lista de estas variables está disponible a través de "declarar -r". Pero hay algunos vars que no aparecen en esta lista, pero que aún no se pueden configurar en eval, por ej. BASH_ARGC. Así que necesito agriarlos también.
En este punto, mi solución se siente muy frágil y propensa a errores, y no estoy seguro de lo portátil que es. ¿Hay una mejor manera de hacer esto?
tengo que hacer algún trabajo en C entre la ejecución de a.sh y b.sh, por lo que no es posible para un a llamada B . Tenga en cuenta que estoy interesado en las variables de shell, no en las variables de entorno. – danvk
ah, perdón por eso! – eruciform