Execute o shell script nas janelas usando o Cygwin

4

Estou tendo problemas para executar o script .sh no Windows usando o Cygwin.

Quando eu executo o arquivo: ./build.sh -s srv.txt Estou recebendo: ./build.sh: line 1: #!/bin/bash: No such file or directory

Vocês podem me ajudar, o que isso significa? A 1ª linha é comentada:)

obrigado.

    
por elbek 05.10.2012 / 23:27

5 respostas

4

Eu tive o mesmo problema ao executar o cygwin no Windows. Para mim, não tinha nada a ver com o caminho.

Tinha tudo a ver com a codificação. Eu estava usando UTF-8 com a BOM (marca de pedido de byte) . O BOM estava causando um estrangulamento. Depois que eu o removi, funcionou perfeitamente.

Eu atualizei a codificação usando o Notepad ++ por:

Encoding -> Encode in UTF-8 without BOM

O comando which bash foi enviado:

/usr/bin/bash

No entanto, ainda conseguiu resolver

#!/bin/bash
    
por 18.06.2013 / 16:13
3

Geralmente, há um ^M (retorno de carro) no final de cada linha do seu arquivo ou algum outro problema de codificação que impede que a linha #!/bin/bash seja interpretada corretamente.

Pegue uma cópia do arquivo e salve-o como ASCII simples usando um editor de sua escolha para remover o máximo possível de codificação não-ASCII. Além disso, tente salvá-lo no formato 'UNIX' se o editor for compatível.

    
por 05.10.2012 / 23:55
2

Já tentou correr ...

sh build.sh

Em vez de ...

./build.sh

Não tenho certeza (nunca executei o Cygwin), mas parece que /bin/bash não é um caminho em sua máquina, então seu shebang ( #!/bin/bash ) explode o programa.

Se você executar o programa usando sh , o shebang deve ser tratado como um comentário.

Espero que isso ajude.

    
por 11.03.2013 / 11:07
1

#!/bin/bash (chamado shebang, abreviação de Crash ( # ) Bang ( ! ), informa ao shell qual programa usar para executar o script em questão.Você verá isso com scripts perl ( #!/usr/bin/perl ), Python ( #!/usr/bin/python ) ou php ( #!/usr/bin/php ) também.

Na sua situação, algumas coisas podem estar causando isso. O shell 'bash' não está instalado ou o script está em um formato não reconhecido que você não pode ver.

Primeiro, existe bash? Nos forneça os resultados: ls -l /bin/bash

Em segundo lugar, o que está no script? Nos dê as 2 primeiras linhas deste: od -c build.sh O que estamos procurando é o script estar no formato errado. O Windows gosta de CRLF' ou \r\n para uma linha que termina enquanto o Linux só gosta de LF ou \n (veja também: link )

Para ser honesto, não sei se CYGWIN gosta de finais de linha do Windows ou Linux, mas essa é uma causa muito provável para o seu problema.

Novamente, forneça a saída de od -c build.sh e veremos o que está acontecendo.

    
por 06.10.2012 / 03:10
0

No passado, tive problemas / M em scripts python escritos em uma caixa do Windows e tentei usá-los em uma caixa linux. Eu usei o dos2unix para converter os arquivos para torná-los operáveis na caixa linux. Se o carro retornar (ou outros problemas de formatação de texto do Windows) e for a causa do problema, isso pode ajudar.

    
por 20.08.2014 / 18:21