1

Я пытаюсь установить 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/’

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

3 ответа3

2

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

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

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

1

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

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

Вам нужно удалить оба трейлинга / с.

Каталог /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


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

  • Индекс AZ командной строки Bash для Linux - отличный справочник по всем вопросам, связанным с командной строкой Bash.
  • ls - список информации о файлах.
  • mv - перемещать или переименовывать файлы или каталоги.
  • rm - удалить файлы (удалить / отменить связь)
0

Попробуйте без завершающего / исходного аргумента. Имея это в виду, вы говорите ОС, чтобы она перемещала содержимое каталога, но не указывала файлы, а не каталог. Это на самом деле соглашение, которому многие системы 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/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .