Windows-Subsystem-for-Linux

無法使用打開的文件句柄重命名目錄

  • February 7, 2019

在我的 Ubuntu 子系統中的 Windows 10 上,當我在目錄中打開一個文件並嘗試在該文件打開時重命名該目錄時,我無法這樣做。

例子:

$mkdir demo
$touch demo/test.txt
$CtlZ
$[2]+  Stopped                 vim demo/test.txt
$mv demo demo100
mv: cannot move 'demo' to 'demo100': Permission denied

現在,當我關閉文件時,我可以重命名它。

$mv demo demo100
$ls demo100
test.txt

這似乎是意外的行為。當我在正常的 Ubuntu 機器上進行相同的測試時,我可以毫無問題地重命名文件。關於可能導致這種情況的任何想法?

是的,這是正常的 Windows 行為。在 Windows 下,打開文件有效地將其鎖定在文件系統上並防止其被移動。

重要的是要了解 WSL 不是虛擬機。它是視窗頂部的(薄)層,它使 Posix 可以訪問視窗。所以當你在 WSL 下打開一個文件時,你實際上是在 windows 下打開它,並且受制於 windows 的通正常則。

閱讀:

https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux

概述

WSL 提供了一個由微軟開發的兼容 Linux 的核心介面(不包含 Linux 核心程式碼),然後可以在其上執行 GNU 使用者空間,例如 Ubuntu、openSUSE、SUSE Linux Enterprise Server、Debian 和 Kali Linux。

更遠

硬體和文件系統訪問

由於沒有硬體仿真/虛擬化(與 coLinux 等其他項目不同),WSL 直接使用主機文件系統

引用自:https://unix.stackexchange.com/questions/499163