O comando no script falha com o erro “not found”, mas roda bem na linha de comando

1

Eu criei um ambiente mínimo em meu dispositivo ARM integrado, consistindo apenas no kernel do Linux e com o Busybox e um sistema de arquivos mínimo em uma imagem initrd. Eu tenho um inittab que executa /etc/init.d/rcS na inicialização.

Eu tenho a seguinte linha em rcS :

/bin/mount -t proc none /proc

No entanto, quando esta linha é executada, obtenho

/etc/init.d/rcS: line 2: /bin/mount -t proc none /proc: not found

A última linha de rcS parece ser executada - essa linha é simplesmente /bin/sh para obter um shell e o shell é aberto automaticamente.

Quando eu executo o mesmo comando mount do shell, ele funciona. /bin/mount é um link simbólico para /bin/busybox .

Por que meu script não consegue encontrar /bin/mount ?

    
por Steve 11.07.2014 / 19:53

1 resposta

1

Como se constata, os espaços no arquivo eram na verdade dois caracteres, 0xD0 0xA0 (Unicode? Talvez seja apenas uma coincidência que eles pareçam com CR / LF trocados à esquerda 4 bits ... Eles também aparecem como um espaço em branco personagem, não dois). Uma pista logo de cara foi a mensagem de erro - ela deveria ter exibido apenas o comando, não os parâmetros, mas não havia espaço em branco na linha.

Uma vez que descobri isso, percebi qual era a causa. Meu sistema operacional é o Windows 7 e estou executando o Ubuntu em uma VM do VirtualBox e uso uma área de transferência compartilhada. Eu copiei o script de uma página da Web no Chrome no Windows 7 e colei no gedit no Ubuntu. Esses caracteres foram copiados da página da web, ou algo não funcionou corretamente com a codificação no caminho da página para o gedit.

Substituir esses por caracteres de espaço resolveu isso.

    
por 11.07.2014 / 23:12