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.

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...


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.


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 .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.