我正在尝试从 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
进一步阅读
- Linux 的 Bash 命令行的 AZ 索引- 与 Bash 命令行相关的所有事物的绝佳参考。
- ls- 列出有关文件的信息。
- 动量- 移动或重命名文件或目录。
- R M- 删除文件(删除/取消链接)
答案3
感谢大家的回复,但事实证明这是 Windows 上 Bash 测试版的一个错误。
其中一位开发人员发布了2016-04-11 对其问题跟踪器的评论:
我们已经在内部修复了其中一个开发分支。不久后应该会发布内部版本。