5 votes

Cygwin chemins cygdrive et invite de commande Windows

Je rencontre un problème étrange avec cygwin agissant de manière incohérente entre les installations, en particulier avec scp. J'ai c:\cygwin\bin dans mon PATH Windows dans les deux cas. Cependant, lorsque j'exécute la commande suivante depuis un Invite de commandes Windows, j'obtiens des résultats très différents entre les deux installations:

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

Sur une machine, le fichier est transféré correctement, mais sur l'autre machine j'obtiens une erreur:

/cygdrive/c/something.txt: Aucun fichier ou dossier de ce type

Cependant, si j'exécute la commande de cette manière sur la machine qui m'a donné l'erreur, le transfert se fait correctement:

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

Pourquoi ces différences? Faut-il configurer quelque chose dans cygwin pour que cela fonctionne avec /cygdrive/c?

MISE À JOUR : Voici quelque chose d'intéressant. Si je fais ls /c depuis une invite de commandes Windows, j'obtiens ce à quoi je m'attends, une liste de tout dans C:. Cependant, ls /cygdrive/c dit que cela n'existe pas. Exécuter ces commandes à partir du bash cygwin donne exactement le comportement opposé.

4voto

molasses Points 1150

La manière correcte de faire cela est d'utiliser la commande mount:

mount --change-cygdrive-prefix /c

ou dans votre cas, rétablir le préfixe par défaut /cygdrive...

4voto

Jethro-goro Points 183

Le problème était la préférence de mon PATH. C'était

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

mais il devait être

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

Après avoir corrigé le PATH, /cygdrive/c s'est résolu comme prévu.

3voto

sashk Points 532

J'ai rencontré ce problème après avoir installé Git, ajouté son bin à mon PATH, puis installé Cygwin et exécuté ssh-host-config pour configurer un service Windows pour sshd. Le problème semble être que la manière dont ssh-host-config enregistre le service amène sshd à invoquer l'exécutable bash de Git (ou scp, ou commande fournie par ssh) plutôt que celui de Cygwin lors de la configuration d'une connexion scp. Pour résoudre ce problème, j'ai supprimé le service tel qu'installé par ssh-host-config. Depuis le bash de Cygwin, j'ai exécuté cygrunsrv -R sshd. Ensuite, j'ai réenregistré le service avec un remplacement de variable 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  -w 

où priv_user est probablement cyg_server. Voir http://cygwin.com/ml/cygwin/2005-05/msg00012.html .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X