Printenv de dentro do cronjob não reportando intérprete shebanged [duplicado]

0

Se eu criar um cronjob como:

* * * * * /root/runfile

E eu coloco o conteúdo de /root/runfile como:

#!/bin/bash
printenv >> /root/printenv

Os conteúdos que aparecem em /root/printenv são:

LANGUAGE=en_CA:en
HOME=/root
LOGNAME=root
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
PWD=/root

Note que ele diz " SHELL=/bin/sh ", mas meu script tem um shebang como #!/bin/bash . Mas printenv (env, set) estão todos relatando /bin/sh como o shell.

No entanto, se eu executar esses comandos dentro de runfile , ele relatará com êxito / bin / bash:

ps -p$$ -ocmd= >> /root/printenv
OR 
readlink /proc/$$/exe >> /root/printenv

Isso prova que estou em um shell real / bin / bash:

/bin/bash

Enquanto escrevo esta pergunta, estou percebendo que talvez a razão é que ela está herdando a variável de ambiente SHELL anterior, e isso nunca muda, e é por isso que seu conteúdo ainda é do processo de chamada cron que é / bin / sh. Essa explicação é confirmada na segunda pergunta vinculada de Gilles.

    
por Wadih M. 24.01.2017 / 02:46

0 respostas

Tags