Bash в Windows: команда mv — не может перейти в свой подкаталог

Bash в Windows: команда mv — не может перейти в свой подкаталог

Я пытаюсь установить Ruby из исходников на подсистеме Windows Linux. Я успешно выполнил сборку из исходников в своем домашнем каталоге: ~/ruby/ruby-2.3.0и пытаюсь переместить его в /opt/rubies/.

При запуске команды перемещения возникает следующая ошибка:

/# 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’

Это очень сбивает с толку, поскольку я перемещаю каталог в совершенно другое место, а не в его подкаталог, как показывают сами пути.

То же самое происходит с любой командой перемещения в моем домашнем каталоге:

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

И я тоже не могу скопировать ни один файл:

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

Я делаю что-то неправильно?

решение1

Попробуйте без завершающего /аргумента источника. С этим вы сообщаете ОС о необходимости переместить содержимое каталога, но не указываете файлы и не каталог. На самом деле это соглашение, которому следуют многие системы Unix в командах.

Поэтому вместо:mv ~/ruby/ruby-2.3.0/ /opt/rubies/

пытаться:mv ~/ruby/ruby-2.3.0 /opt/rubies/

Вам также необходимо убедиться, что вы не запускаете команду с PWD = ~/ruby/ruby-2.3.0, поскольку в этом случае вы пытаетесь переместить каталог, в котором находитесь.cd ~; mv ~/ruby/ruby-2.3.0 /opt/rubies/

решение2

Я делаю что-то неправильно?

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

Вам нужно удалитьобаконечный /s.

Каталог /opt/rubies/ruby-2.3.0уже существует? Проверьте, выполнив:

ls /opt/rubies/ruby-2.3.0

Если он существует, выполните следующую команду, чтобы удалить его:

rm -rf /opt/rubies/ruby-2.3.0

Теперь используйте следующую команду для выполнения перемещения:

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

Это создаст каталог/opt/rubies/ruby-2.3.0


Дальнейшее чтение

решение3

Спасибо всем за ответы, но, как оказалось, это ошибка бета-версии Bash для Windows.

Один из разработчиков опубликовалкомментарий к их системе отслеживания ошибок от 2016-04-11:

У нас есть внутреннее исправление на одной из наших веток разработки. Должно появиться в инсайдерских сборках в ближайшее время.

Связанный контент