
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 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? 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/tcsh
a primeira linha do seu script. O echo
comando é 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 echo
comando por uma chamada para o seu programa python, se desejar.