Cygwin Cygdrive-Pfade und Windows-Eingabeaufforderung

2

Ich habe ein seltsames Problem damit, dass Cygwin zwischen den Installationen inkonsistent agiert, insbesondere bei scp. Ich habe in beiden Fällen c: \ cygwin \ bin in meinem Windows-Pfad. Wenn ich jedoch den folgenden Befehl über eine Windows-Eingabeaufforderung ausführe , werden zwischen den beiden Installationen sehr unterschiedliche Ergebnisse erzielt:

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

Auf dem einen Rechner überträgt es die Datei einwandfrei, aber auf dem anderen Rechner erhalte ich eine Fehlermeldung:

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

Wenn ich den Befehl jedoch auf dem Computer, auf dem der Fehler aufgetreten ist, auf diese Weise ausführe, funktioniert die Übertragung einwandfrei:

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

Warum die Unterschiede? Muss ich in cygwin etwas konfigurieren, damit dies mit / cygdrive / c funktioniert?

UPDATE: Hier ist etwas interessanteres. Wenn ich ls /can einer Windows-Eingabeaufforderung tue, erhalte ich das, was Sie erwarten würden, als Liste von allem in C :. ls /cygdrive/cSagt jedoch, dass es nicht existiert. Das Ausführen dieser Befehle aus der Cygwin-Bash ergibt genau das gegenteilige Verhalten.

Matt Baker
quelle

Antworten:

3

Die richtige Methode hierfür ist die Verwendung des Befehls mount :

mount --change-cygdrive-prefix /c

oder stellen Sie in Ihrem Fall das Standardpräfix wieder her /cygdrive...

Amro
quelle
Wissen Sie, ob dies eine Standardeinstellung ist, die in einer neueren Version von cygwin hinzugefügt wurde?
Matt Baker
Der Standardwert ist tatsächlich, es /cygdrivesei denn, Sie ändern ihn manuell (zumindest war dies das letzte Mal, als ich das überprüft habe). Sie wissen, dass nichts Sie davon
Amro
Hmm. Das ist komisch, das ist eine saubere Installation von Cygwin und ich habe keine der Optionen geändert.
Matt Baker
3

Das Problem war meine PATH-Priorität. Es war

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

aber es musste sein

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

Nach dem Reparieren wurde der PATH /cygdrive/cwie erwartet behoben.

Matt Baker
quelle
2

Ich habe dieses Problem festgestellt, nachdem ich Git installiert, es meinem PATH als bin hinzugefügt, dann Cygwin installiert und ssh-host-config ausgeführt habe, um einen Windows-Dienst für sshd einzurichten. Das Problem scheint zu sein, dass sshd aufgrund der Art und Weise, wie ssh-host-config den Dienst registriert, die ausführbare Datei Gits (oder den von scp oder ssh bereitgestellten Befehl) aufruft, anstatt die von Cygwin beim Einrichten einer scp-Verbindung. Um dies zu beheben, entfernte ich den Dienst, wie er von ssh-host-config installiert wurde. Aus Cygwin Bash habe ich ausgeführt cygrunsrv -R sshd. Dann habe ich den Dienst mit einer PATH-Variablenüberschreibung neu registriert.

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>

Dabei ist priv_user wahrscheinlich cyg_server. Siehe http://cygwin.com/ml/cygwin/2005-05/msg00012.html .

G-Wiz
quelle