Bash unter Windows: mv-Befehl – ​​kann nicht in ein Unterverzeichnis von sich selbst wechseln

Bash unter Windows: mv-Befehl – ​​kann nicht in ein Unterverzeichnis von sich selbst wechseln

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

Wenn ich den Verschiebebefehl 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 äußerst verwirrend, da ich das Verzeichnis an einen völlig anderen Ort verschiebe und nicht in ein eigenes Unterverzeichnis, wie die Pfade selbst zeigen.

Für alle Verschiebebefehle in meinem Home-Verzeichnis passiert das Gleiche:

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

Und ich kann anscheinend 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?

Antwort1

Versuchen Sie es ohne das nachfolgende /Quellargument. Damit weisen Sie das Betriebssystem an, den Inhalt des Verzeichnisses zu verschieben, geben aber weder die Dateien noch das Verzeichnis an. Dies ist tatsächlich eine Konvention, die viele Unix-Systeme bei Befehlen befolgen.

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

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

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

Antwort2

Mache ich etwas falsch?

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

Sie müssen entfernenbeidenachfolgendes /s.

Existiert das Verzeichnis /opt/rubies/ruby-2.3.0bereits? Überprüfen Sie es, indem Sie Folgendes ausführen:

ls /opt/rubies/ruby-2.3.0

Wenn es vorhanden ist, 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 den Vorgang durchzuführen:

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

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


Weitere Informationen

  • Ein AZ-Index der Bash-Befehlszeile für Linux- Ein hervorragendes Nachschlagewerk zu allen Themen rund um die Bash-Befehlszeile.
  • ls- Informationen zu Dateien auflisten.
  • mv- Dateien oder Verzeichnisse verschieben oder umbenennen.
  • rm- Dateien entfernen (löschen/Verknüpfung aufheben)

Antwort3

Vielen Dank an alle für die Antworten, aber es stellt sich heraus, dass dies ein Fehler der Betaversion von Bash unter Windows ist.

Einer der Entwickler veröffentlichte eineKommentar zu ihrem Issue Tracker am 11.04.2016:

Wir haben intern einen Fix für einen unserer Entwicklungszweige. Er sollte in Kürze in den Insider-Builds verfügbar sein.

verwandte Informationen