cygdrive cygdrive paths e Prompt de Comando do Windows

2

Estou tendo um problema estranho com o cygwin agindo de forma inconsistente entre as instalações, especificamente o scp. Eu tenho c: \ cygwin \ bin no meu Windows PATH em ambos os casos. Quando eu executo o seguinte comando de um Prompt de Comando do Windows , no entanto, obtenho resultados muito diferentes entre as duas instalações:

scp /cygdrive/c/something.txt User@server:${HOME}/something.txt

Na única máquina, ele transfere o arquivo muito bem, mas na outra máquina recebo um erro:

/cygdrive/c/something.txt: No such file or directory

No entanto, se eu executar o comando desta maneira na máquina que me deu o erro, ele será transferido bem:

scp /c/something.txt User@server:${HOME}/something.txt

Por que as diferenças? Existe algo que eu preciso configurar dentro do cygwin para fazer isso funcionar com / cygdrive / c?

UPDATE: Aqui está algo mais interessante. Se eu faço ls /c de um prompt de comando do Windows, recebo o que você esperaria, como lista de tudo em C :. No entanto, ls /cygdrive/c diz que não existe. Executar esses comandos a partir do cygwin bash produz exatamente o comportamento oposto.

    
por Matt Baker 28.09.2010 / 22:25

3 respostas

3

A maneira correta de fazer isso é usar o comando mount :

mount --change-cygdrive-prefix /c

ou no seu caso, restaure o prefixo /cygdrive padrão ...

    
por 28.09.2010 / 22:41
3

O problema foi a minha precedência no PATH. Foi

PATH=%PATH%;C:\cygwin\bin

mas precisava ser

PATH=C:\cygwin\bin;%PATH%

Depois de corrigir o PATH /cygdrive/c resolvido como esperado.

    
por 29.09.2010 / 02:48
2

Eu encontrei este problema depois que instalei o Git, adicionei o bin ao meu PATH, instalei o Cygwin e executei o ssh-host-config para configurar um serviço do Windows para o sshd. O problema parece ser que a maneira como o ssh-host-config registra o serviço faz com que o sshd invoque o executável bash (ou scp, ou comando fornecido pelo ssh) do Git em vez do Cygwin no processo de configuração de uma conexão scp. Para corrigir isso, eu removi o serviço como instalado pelo ssh-host-config. Do Cygwin bash, executei cygrunsrv -R sshd . Então eu registrei novamente o serviço com uma substituição de variável PATH,

cygrunsrv -I sshd -d "CYGWIN sshd" -p "/usr/sbin/sshd" \
  --env "PATH=/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:$PATH" \
  -a "-D" -u <priv_user> -w <password>

onde priv_user é provavelmente cyg_server. Consulte o link .

    
por 24.11.2012 / 07:42