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

0

Eu posso executar o comando setenv muito bem 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 eu executo explicitamente como mostrado abaixo, não funciona. Eu preciso fazer isso porque eu tenho que especificar shell ao executá-lo via chamada de sub-processo python, caso contrário, ele irá chamar um sh shell 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? Eu procurei esse problema on-line, mas não consegui encontrar nenhum problema semelhante a este. Isso é extremamente frustrante.

    
por rrlamichhane 06.07.2017 / 18:46

1 resposta

1

Você está executando uma chamada separada do shell quando usa /usr/bin/tcsh na primeira linha do seu script. O comando echo é executado no shell 'delimitador' - aquele que possui os comandos nele.

Por que não executar os ambos comandos na primeira linha, assim:

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

Em seguida, ambos estão executando na mesma invocação do shell. Substitua o comando echo por uma chamada para seu programa python, se desejar.

    
por 12.07.2017 / 01:00