Script de shell não encontrado [fechado]

2

Eu recebo um problema usando um script de shell no Ubuntu.

Meu script:

#!/bin/bash
/usr/local/bin/node ./index.js
exec bash

Eu configurei como executável com:

sudo chmod +x ./index.sh

Em seguida, execute-o com:

sudo ./index.sh

Mas obtenha:

sudo: unable to execute ./index.sh: No such file or directory

No entanto, o arquivo está lá:

$ ls -la 
-rwxr-xr-x   1 root root    54 oct.   4 10:05 index.sh
    
por tonymx227 04.10.2017 / 10:09

1 resposta

3

O script foi editado em algum momento em uma máquina Windows. Editores no Windows geralmente usam finais de linha do DOS. Eles possuem um retorno de carro extra ( \r ) em comparação com as terminações de linha do Unix. Estes confundem o kernel quando sudo pede para executar o script.

Para corrigir o script, execute dos2unix sobre ele.

Como alternativa, remova todos os \r no script com

$ tr -d '\r' <index.sh >index.sh-new
$ # test index.sh-new to make sure it works
$ mv index.sh-new index.sh

Isso obviamente quebrará o script se ele depender do tratamento de retornos de carro literais de alguma forma.

    
por 04.10.2017 / 11:12