我知道 WindowsC:\
驱动器在 Linux 的 Windows 子系统中显示为/mnt/c
. 但是,在 bash Git 挂钩脚本中,C:\
驱动器显示为/c
,而不是/mnt/c
.
在 bash 脚本中有什么方法可以确定C:\
应该如何引用驱动器?换句话说,有什么方法可以确定是否应该使用/mnt/c
or建立路径/c
?
我知道 WindowsC:\
驱动器在 Linux 的 Windows 子系统中显示为/mnt/c
. 但是,在 bash Git 挂钩脚本中,C:\
驱动器显示为/c
,而不是/mnt/c
.
在 bash 脚本中有什么方法可以确定C:\
应该如何引用驱动器?换句话说,有什么方法可以确定是否应该使用/mnt/c
or建立路径/c
?
Windows领域的 Git:
这里的 POSIX 功能由msys2共享动态库(又名 DLL)提供,并
/bin/git.exe
针对该环境进行交叉编译 (PE)。此环境中的挂载点,与 UNIX 系统相同,由/etc/fstab
. 这是示例:因此,Windows 驱动器安装在
/
(根)文件夹中。例如,C:\
变成/c
. 这是默认选项。用户可以将其更改为所需的值。适用于 Linux 领域的 Windows 子系统:
这里 WSL 执行真正的ELF64 二进制文件,它们是从
/init
. 挂载点由 init 二进制文件和 Lx 子系统会话管理器服务 (LxssManager) 管理。默认情况下,所有 Windows 分区都安装在/mnt
文件夹中。从 Insider Build 17093 开始,可以使用/etc/wsl.conf
文件配置挂载点。仔细阅读这篇博文以获取更多信息。这是一个示例:简而言之,这个文件:
enabled
: 自动挂载 Windows 驱动器。mountFsTab
/etc/fstab
: 从文件自动挂载用户配置的驱动器。root
: 将挂载 Windows 驱动器的目录。options
:Windows 驱动器的安装选项。这些与mount -o
命令相同。你的问题有点不太可能,因为它做出了错误的假设。首先,Windows 驱动器可以以不同的方式挂载 - 本地磁盘、SMB 挂载、NFS 挂载。
/mnt/c 可能适用于您的发行版,但它不是特别常见,在使用 /media?deviceid/ 的 Ubuntu 类型发行版中也不是这种情况 - where.deviceid 不是驱动器号。
同样,“C”驱动器是相当随意的——Linux 确实有一个驱动器结构——所以如果它是一个本地硬盘驱动器,你可能会找到一种扫描 /dev/sd* 的方法?对于 NTFS 分区并查看它们是否已安装。这不是一个好的通用解决方案,因为它做出了许多通常可能不正确的假设——提示路径可能会更好。
另一种(容易出错)的方法可能是假设磁盘已安装,然后使用
df
和解析每个(非 shm)系统的 windows/