我正在嘗試從 Windows Linux 子系統上的原始程式碼安裝 Ruby。我已經成功地從我的主目錄中的源代碼構建:~/ruby/ruby-2.3.0
並且我正在嘗試將其移動到/opt/rubies/
.
當我執行 move 命令時,出現以下錯誤:
/# 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- 列出有關文件的資訊。
- MV- 移動或重新命名檔案或目錄。
- R M- 刪除檔案(刪除/取消連結)
答案3
感謝大家的回复,但事實證明這是 Windows 上 Bash 測試版的錯誤。
其中一位開發者發布了於 2016-04-11 對其問題追蹤器發表評論:
我們在一個開發分支上進行了內部修復。不久之後應該就會迎來內部人士的建設。