如何确定 Linux 如何查看 Windows 驱动器

如何确定 Linux 如何查看 Windows 驱动器

我知道 WindowsC:\驱动器在 Windows Subsystem for Linux 中显示为/mnt/c。但是,在 bash Git 钩子脚本中,C:\驱动器显示为/c,而不是/mnt/c

有没有办法在 bash 脚本中确定应如何C:\引用驱动器?换句话说,有没有办法确定是否应使用/mnt/c或 来构建路径/c

答案1

适用于 Windows 的 Git领域:

这里的 POSIX 功能由系统管理软件共享动态库(又称 DLL),并/bin/git.exe针对该环境进行交叉编译(PE)。此环境中的挂载点是与 UNIX 系统相同,由 进行配置/etc/fstab。示例如下:

none / cygdrive binary,posix=0,noacl,user 0 0

因此,Windows 驱动器被安装在/(根)文件夹中。例如,C:\变为/c。这是默认选项。用户可以将其更改为所需的值。

适用于 Linux 的 Windows 子系统领域:

这里 WSL 执行真正的ELF64 二进制文件是从 派生出来的/init。挂载点由该 init 二进制文件和 Lx 子系统会话管理器服务 (LxssManager) 管理。默认情况下,所有 Windows 分区都挂载在/mnt文件夹中。从 Insider Build 17093 开始,可以使用文件配置挂载点/etc/wsl.conf。阅读这篇博文仔细查看更多信息。以下是示例:

[automount]
enabled = true
mountFsTab = true
root = /
options = "metadata,umask=22,fmask=11"

简而言之,这个文件:

  • enabled:自动挂载 Windows 驱动器。
  • mountFsTab/etc/fstab:从文件自动挂载用户配置的驱动器。
  • root:将安装 Windows 驱动器的目录。
  • options:Windows 驱动器的挂载选项。这些与mount -o命令相同。

答案2

您的问题有点不切实际,因为它做出了错误的假设。首先,Windows 驱动器可以以不同的方式安装 - 本地磁盘、SMB 安装、NFS 安装。

/mnt/c 可能适用于您的发行版,但它并不是特别常见,并且在使用 /media?deviceid/ 的 Ubuntu 类型发行版中并非如此 - 其中,deviceid 不是驱动器号。

同样,“C”驱动器也相当随意 - Linux 确实有一个驱动器结构 - 因此如果它是本地硬盘驱动器,您可能可以找到一种方法来扫描 /dev/sd*? 中的 NTFS 分区并查看它们是否已安装。这不是一个好的通用解决方案,因为它做出了很多假设,而这些假设往往是不正确的 - 您最好提示输入路径。

另一种(容易出错的)方法可能是假设磁盘已安装,然后使用df并解析每个(非共享内存)系统的 windows/

相关内容