
Me gustaría obtener un archivo dentro de un script tcsh. En codigo:
#!/bin/tcsh
unsetenv LD_LIBRARY_PATH
source $1
echo $LD_LIBRARY_PATH > temp_file
El resultado esperado:La variable de entorno establecida por el script usando el comando fuente se imprimirá en un archivo temporal.
Resultado actual:El archivo fuente se ejecuta correctamente, pero la LD_LIBRARY_PATH
variable permanece vacía.
¿Alguna idea sobre cómo hacer que esto funcione?
PD tcsh
Por supuesto, no es mi shell preferido, pero tengo un script en funcionamiento que configura numerosas variables de entorno en tcsh
las que quiero empezar a trabajar bash
. Pensé que la forma más fácil (aparte de reescribir el tcsh
shell cada vez) es obtenerlo, imprimir las variables en un archivo y, con un poco de magia del shell, volver a generar todo en bash.
Respuesta1
Lo intenté con csh en OpenBSD. Supongo que mi ejemplo también funciona con tcsh.
Archivo prueba.csh:
#!/bin/csh
source data.csh
echo $VARIABLE
Archivo de datos.csh
#!/bin/csh
setenv VARIABLE 1234
Resultado:
$ csh test.csh
1234
Respuesta2
Para mayor referencia, esto realmente funciona, pero no se debe usar el shebang para la ruta tcsh:
#!/bin/tcsh
sino que utilice la ruta a 'env':
#!/usr/bin/env tcsh
para permitir flexibilidad en sistemas con tcsh instalado en diferentes rutas. Por ejemplo, si 'tcsh' está instalado en '/usr/bin/tcsh', el primero fallará, mientras que el segundo seguirá funcionando.