我该如何在 Windows 环境下的 Ubuntu 上使用 Bash?

我该如何在 Windows 环境下的 Ubuntu 上使用 Bash?

我在 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

您应该能够在mntWindows 版 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 代码。

相关内容