我在 VirtualBox 上使用 Ubuntu 一段时间了。由于我已经升级到 Windows 10,我认为这可能是一个简化我的工作并使用可以安装在 Windows 10 上的 Ubuntu on Windows(Unix 命令)的好机会,这样我就不必启动 VirtualBox,转移文件等,每次我想使用 Ubuntu 时。
尽管如此,我不确定我是否理解应该如何有效地使用此功能。
恰恰:
- 有没有一种(简单)方法可以从 Bash 访问我的 Windows 10 文件(假设文档和设置中的 .txt 文件)?我通过 Bash 找到了我的文件,但是
Permission denied
当我尝试使用ls
命令时它会返回,即使我右键单击Ubuntu 上的 Bash和以管理员身份运行。我有办法解决这个问题吗? - 假设我可以访问文件,那么我可以通过 Bash 运行 Windows 10 程序吗?或者我应该安装 Linux 版本?
答案1
您可以访问外部文件通过 DrvFS/mnt
树。/mnt/c
与您的驱动器相对应C:
,并且具有相同的布局。您的用户可以访问的所有文件都可以通过此文件系统获得,并且权限的转换有些直观:
为了向用户提供有关他们对文件拥有的权限的提示,DrvFs 检查用户对文件拥有的有效权限,并将这些权限转换为读/写/执行位,例如在运行“ls -l”时可以看到这一点。 ”。然而,并不总是存在一对一的映射;例如,Windows 对于在目录中创建文件或子目录的能力具有单独的权限。如果用户具有其中任一权限,DrvFs 将报告对目录的写访问权限,而实际上某些操作仍可能因访问被拒绝而失败。
这些可能与预期有所不同,特别是如果您应用了自定义 ACL,或者通过提升/非提升终端访问文件(例如,Windows 比传统的 Unix 八进制权限具有更细粒度的创建权限) ,并且 WSL 不映射到 Linux ACL)。您可以使用的唯一权限改变是写 ( w
) 访问,这会影响 NTFS 文件上的只读标志。
你能从 Bash 启动 Windows 程序(前提是您正在使用)至少版本 14951,自去年以来已通过 Insider 计划提供,并将在下一个 Windows 版本中提供。您只需要像平常一样找到并执行相关的可执行文件即可;你必须在 DrvFS 路径内执行此操作。
可以将它们组合在一起:
$ export PATH=$PATH:/mnt/c/Windows/System32
$ cd /mnt/c/Users/you
$ notepad.exe file.txt
您(目前或许永远)无法让 Windows 可执行文件从 Linux 文件中读取。从 WSL 启动可执行文件只会失败,但是尝试以不同的方式访问文件只会让一切都崩溃。
答案2
你可以尝试https://www.cygwin.com/能够在 Windows 中使用 bash 终端。您还可以从该终端查看您缺少权限的文件的文件权限。
答案3
您应该能够在mnt
Windows 版 Bash 的目录中找到您的文件。 (例如/mnt/c/
)
如果存在权限错误,您可以使用检查ls -l
这将为您提供rwx
(读、写、执行)权限,按从左到右的顺序表示owner, group, all others
请记住,Bash for Windows 旨在成为一项开发功能,它并不旨在取代虚拟化整个发行版,就像在 VirtualBox 上那样。很多东西(比如设备)无法像在 VirutalBox 中那样正常工作。
您无法通过 Bash shell 运行 Windows 10 程序。您也只能运行有限数量的 Linux 程序(apt-get
例如,用于安装它们)。这是因为上面提到它与 VirtualBox 相比有缺陷按设计
我确信有很多人使用它,它最初是为了让开发人员能够在 Windows 机器上测试他们的 Linux 代码。