O comando 'setenv' não funciona no shell tcsh quando chamado explicitamente

O comando 'setenv' não funciona no shell tcsh quando chamado explicitamente

Posso executar o comando setenv perfeitamente no meu shell tcsh assim:

echo $0
/usr/bin/tcsh
echo $SHELL
/usr/bin/tcsh
setenv START_TIME `date +%s`
echo $START_TIME
1499355967

Mas, sempre que executo explicitamente como mostrado abaixo, não funciona. Preciso fazer isso porque preciso especificar o shell ao executá-lo por meio de uma chamada de subprocesso python, caso contrário, ele chamará um shshell como padrão.

/usr/bin/tcsh -i -f -c 'setenv START_TIME `date +%s`'
echo $START_TIME
START_TIME: Undefined variable.

Qual é o problema aqui? Pesquisei esse problema on-line, mas não consegui encontrar nenhum problema semelhante a este. Isso é extremamente frustrante.

Responder1

Você está executando uma invocação separada do shell ao usar /usr/bin/tcsha primeira linha do seu script. O echocomando é executado no shell 'incluso' - aquele que contém os comandos.

Por que não correramboscomandos na primeira linha, assim:

/usr/bin/tcsh -i -f -c 'setenv START_TIME `date +%s`; echo $START_TIME'  

Então ambos estão rodando na mesma invocação do shell. Substitua o echocomando por uma chamada para o seu programa python, se desejar.

informação relacionada