
Puedo ejecutar el comando setenv perfectamente en mi shell tcsh de esta manera:
echo $0
/usr/bin/tcsh
echo $SHELL
/usr/bin/tcsh
setenv START_TIME `date +%s`
echo $START_TIME
1499355967
Pero cada vez que lo ejecuto explícitamente como se muestra a continuación, no funciona. Necesito hacer esto porque tengo que especificar el shell al ejecutarlo mediante una llamada al subproceso de Python; de lo contrario, llamará a un sh
shell de forma predeterminada.
/usr/bin/tcsh -i -f -c 'setenv START_TIME `date +%s`'
echo $START_TIME
START_TIME: Undefined variable.
¿Cuál es el problema aquí? Busqué este problema en línea, pero no pude encontrar ningún problema similar a este. Esto es extremadamente frustrante.
Respuesta1
Estás ejecutando una invocación separada del shell cuando usas /usr/bin/tcsh
en la primera línea de tu script. El echo
comando se ejecuta en el shell 'adjunto', el que contiene los comandos.
¿Por qué no correr?amboscomandos en la primera línea, así:
/usr/bin/tcsh -i -f -c 'setenv START_TIME `date +%s`; echo $START_TIME'
Entonces ambos se ejecutan en la misma invocación del shell. Reemplace el echo
comando con una llamada a su programa Python si lo desea.