Windows 上的 Bash:mv 命令 - 无法移动到其自身的子目录

Windows 上的 Bash:mv 命令 - 无法移动到其自身的子目录

我正在尝试从 Windows Linux 子系统上的源代码安装 Ruby。我已成功从主目录中的源代码构建:~/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

感谢大家的回复,但事实证明这是 Windows 上 Bash 测试版的一个错误。

其中一位开发人员发布了2016-04-11 对其问题跟踪器的评论

我们已经在内部修复了其中一个开发分支。不久后应该会发布内部版本。

相关内容