El comando 'setenv' no funciona en tcsh shell cuando se llama explícitamente

El comando 'setenv' no funciona en tcsh shell cuando se llama explícitamente

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 shshell 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/tcshen la primera línea de tu script. El echocomando 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 echocomando con una llamada a su programa Python si lo desea.

información relacionada