Script simples de Bash

5

Estou tentando entender o script Bash via Cygwin. Meu script é o mais simples possível.

Altero o diretório para a raiz da minha unidade C e imprimo o novo local.

#!/usr/bin/bash 
cd /cygdrive/c
pwd

é salvo no arquivo chdir.sh no meu diretório pessoal. Eu então chamo ./chdir.sh do prompt do bash. Isso resulta no erro

: No such file or directorygdrive/c
/cygdrive/c/Documents and Settings/rcotton

Eu definitivamente tenho uma unidade C, e o comando cd /cygdrive/c funciona quando eu chamo diretamente do prompt do bash.

Eu percebo que esse problema é provavelmente estupidamente simples; por favor, você pode me dizer o que estou fazendo errado.

    
por Richard Cotton 22.03.2010 / 12:47

4 respostas

7

Apenas no caso de você ter editado seu script com um editor que não faz parte de o ambiente do Cygwin (por exemplo, qualquer coisa como "Bloco de notas *", "WordPad", etc.): converta seu script em alinhamentos de linha Unix usando a ferramenta 'dos2unix'.

O script em si é absolutamente correto, não há necessidade de nenhuma / ou nenhuma alteração. A mensagem de erro

: No such file or directorygdrive/c

me leva a pensar em problemas com o alinhamento de linha desde \ r \ n (final da linha do Windows). Apenas no caso de você não ter 'dos2unix' instalado:

tr -d \r < win.txt > unix.txt

ou

sed -e 's/$/\r/' < unix.txt > win.txt
    
por 22.03.2010 / 14:01
0

Tem a certeza de que está a utilizar a barra, e não a barra invertida, no seu comando cd? Seu problema seria sintomático de confundir esses dois.

Experimente essas variantes se apenas uma única barra for produzida de fato e gerar esse erro estranho:

cd //cygdrive//c

ou

cd \cygdrive\c
    
por 22.03.2010 / 13:27
0

Teste #!/usr/bin/bash.exe e veja se isso faz diferença. Ou funciona na minha instalação do Cygwin, mas o arquivo é na verdade chamado bash.exe.

    
por 22.03.2010 / 13:50
0

PARA: ttarchala (e Sr. Cotton)

No cygwin, //start1/path_2/stuff/long aciona o modo de invasão UNC, que trata start1 como um servidor SMB com compartilhamento path_2 . Isto não é o que se pretendia.

Isso às vezes o incomoda em certos scripts de shell que são compartilhados com o UNIX, onde várias barras são sempre reunidas em uma única barra. No cygwin, várias barras são unidas, EXCEPTO se for o início, que é o modo de disparo UNC.

    
por 04.08.2010 / 19:28

Tags