Havia um personagem adicional no final do seu shebang. ^M
significa CR
ou (outra notação) \r
. Foi uma parte da sequência \r\n
que é uma sequência final de linha no DOS e no Windows. dos2unix
converteu a sequência para o único \n
, o que está correto no Linux.
O shebang é tratado como um comentário quando você corre
python /opt/updatednsfix.py
, então o personagem adicional não importa. Meu teste indica que python
não se importa com \r\n
e faz o trabalho certo. Mas como root
você escolheu uma maneira diferente de executar o script:
/opt/updatednsfix.py
e neste caso o shebang está sendo interpretado. O arquivo /usr/bin/python^M
não foi encontrado - daí o erro.
Why would this only be a problem under root?
Não é sobre root
. A diferença real estava em um método em que você executa o script: python /opt/updatednsfix.py
vs. /opt/updatednsfix.py
.