Bash unter Windows: Befehl mv - kann nicht in ein Unterverzeichnis von sich selbst verschoben werden

3046
Sly_cardinal

Ich versuche, Ruby aus Quellen auf dem Windows Linux-Subsystem zu installieren. Ich habe erfolgreich aus dem Quellcode in meinem Home-Verzeichnis erstellt: ~/ruby/ruby-2.3.0Ich versuche, es in das Verzeichnis zu verschieben /opt/rubies/.

Wenn ich den Befehl zum Verschieben ausführe, erhalte ich die folgende Fehlermeldung:

/# mv ~/ruby/ruby-2.3.0/ /opt/rubies/ mv: cannot move ‘/root/ruby/ruby-2.3.0/’ to a subdirectory of itself, ‘/opt/rubies/ruby-2.3.0’ 

Das ist sehr verwirrend, da ich das Verzeichnis an einen völlig anderen Ort verschiebe, nicht in ein Unterverzeichnis von selbst, wie die Pfade selbst zeigen.

Das gleiche gilt für jeden Befehl zum Verschieben in meinem Home-Verzeichnis:

~# mv test/ / mv: cannot move ‘test/’ to a subdirectory of itself, ‘/test’ 

Und ich kann auch keine Dateien kopieren:

~# cp ruby/ruby-2.3.0/ /opt/rubies/ruby-2.3.0 cp: omitting directory ‘ruby/ruby-2.3.0/’ 

Mache ich etwas falsch?

1

3 Antworten auf die Frage

2
Sly_cardinal

Thanks for the responses everyone, but it turns out that this is a bug with the beta version of Bash on Windows.

One of the developers posted a comment to their issue tracker on 2016-04-11:

We have a fix internally on one of our dev branches. Should hit the insiders builds before too long.

1
DavidPostill

Mache ich etwas falsch?

mv ~/ruby/ruby-2.3.0/ /opt/rubies/ 

Sie müssen beide nachgestellten /s entfernen .

Existiert /opt/rubies/ruby-2.3.0bereits ein Verzeichnis ? Überprüfen Sie durch Ausführen:

ls /opt/rubies/ruby-2.3.0 

Wenn es existiert, führen Sie den folgenden Befehl aus, um es zu entfernen:

rm -rf /opt/rubies/ruby-2.3.0 

Verwenden Sie nun den folgenden Befehl, um die Verschiebung auszuführen:

mv ~/ruby/ruby-2.3.0 /opt/rubies 

Dadurch wird das Verzeichnis erstellt /opt/rubies/ruby-2.3.0


Lesen Sie weiter

  • Ein AZ-Index der Bash-Befehlszeile für Linux - Eine hervorragende Referenz für alles, was mit der Bash-Befehlszeile zusammenhängt.
  • ls - Listet Informationen zu Dateien auf.
  • mv - Verschiebt oder benennt Dateien oder Verzeichnisse um.
  • rm - Dateien entfernen (löschen / unlink)
Es fällt sowohl mit als auch ohne nachstehende Schrägstriche aus. Ich habe bestätigt, dass auch das Zielverzeichnis leer ist. Sly_cardinal vor 8 Jahren 0
0
Rowan Hawkins

Versuchen Sie es ohne das nachstehende /Argument auf das Quellargument. Damit sagen Sie dem Betriebssystem, dass es den Inhalt des Verzeichnisses verschieben soll, aber nicht die Dateien und nicht das Verzeichnis. Das ist eigentlich eine Konvention, die viele Unix-Systeme über Befehle hinweg befolgen.

Also statt: mv ~/ruby/ruby-2.3.0/ /opt/rubies/

Versuchen: mv ~/ruby/ruby-2.3.0 /opt/rubies/

Sie müssen auch sicherstellen, dass Sie den Befehl nicht mit PWD = ~ / ruby ​​/ ruby-2.3.0 ausführen, da Sie dann versuchen, das Verzeichnis, in dem Sie sich befinden, zu verschieben. cd ~; mv ~/ruby/ruby-2.3.0 /opt/rubies/

Ich habe alle Kombinationen von nachgestellten Schrägstrichen - mit und ohne - ausprobiert, und es wird immer noch derselbe Fehler angezeigt. Im ersten Beispiel habe ich den Befehl von `PWD = /` ausgeführt, also befand ich mich nicht im verschobenen Verzeichnis. Sly_cardinal vor 8 Jahren 0