当我bash
在 Linux 的 Windows 子系统上启动时,它会将我放到目录中
/mnt/c/Users/<username>
Run Code Online (Sandbox Code Playgroud)
当我ls
看到这个目录时,我看到了使用 Windows 文件资源管理器时可以看到的目录Desktop
、Documents
等C:\Users\<username>
。由于这是bash
程序开始的地方,我希望这是我的主目录,但是当我输入cd
或cd ~
我被带到
/home/<username>
Run Code Online (Sandbox Code Playgroud)
其中包含我希望在 Linux 机器的主目录中找到的我的.bashrc
, .profile
etc. 文件。此外,cd ../..
从这里进入我可以看到目录bin
,etc
等等,这在 Linux 机器上再次如预期。
关于这一切,我有两个问题:
/mnt/c/Users/<username>
与什么相比C:\Users\<username>
?似乎它们是同一个——那是/mnt/c/
什么?/home/<username>
使用 Windows 文件资源管理器查看文件?并不是说我真的想要——我只是想了解一下 Windows 如何组织 Linux 子系统。有没有办法从 Windows 上的 Bash 访问可移动媒体(例如拇指驱动器或 SD 卡)?
Windows 上的 Bash使用 DriveFs在/mnt
文件夹中安装固定驱动器,但它不会自动安装可移动媒体。它看起来也不像是将它们放入/dev
其中:
Aaron@MYPC:/$ ls /dev
block fd kmsg lxss null ptmx pts random shm stderr stdin stdout tty tty0 tty1 urandom zero
Run Code Online (Sandbox Code Playgroud)
有没有办法挂载可移动驱动器?有没有办法访问底层块设备?
bash windows-10 windows-subsystem-for-linux windows-10-v1607
我有一台双启动配置的 PC。
由于 Windows 10 具有适用于 Linux 的 Windows 子系统,是否可以从其中访问 EXT4 分区?
我知道有人讨论过,由于 Win 7 中自动运行(或自动播放??)的限制,无法在连接时从 USB 驱动器启动应用程序。但是可以创建具有事件类型触发器的计划任务. 当驱动器 - 或任何 USB 设备,就此而言 - 连接时,肯定会发生一个事件。
有没有人知道我应该使用哪个事件 ID?或者至少是什么类型的事件?我在哪里可以在事件查看器中找到该事件?
windows scheduled-tasks event-log usb-storage windows-task-scheduler
我在 Windows 10 Linux 子系统上使用 Ubuntu 16.04。当我插入 NTFS 外部硬盘驱动器 (D:) 时,我无法通过 bash 访问它,当我运行时,ls -la /mnt
我得到以下输出:
rwxr-xr-x 1 root root 512 Sep 21 19:04 .
drwxr-xr-x 1 root root 512 Jan 1 1970 ..
drwxrwxrwx 1 <myusername> <myusername> 512 Sep 21 13:06 c
d????????? ? ? ? ? ? d
drwxrwxrwx 1 <myusername> <myusername> 512 Sep 21 13:06 q
Run Code Online (Sandbox Code Playgroud)
我还尝试按照此解决方案手动安装驱动器,但结果相同。可以从 PowerShell 和文件资源管理器访问该磁盘。
linux mount hard-drive windows-subsystem-for-linux ubuntu-16.04
于是我用C编程语言写了一个计算斐波那契数列的小程序,想把fibo.c文件移到我的普通C盘。问题是我在运行在 Linux 的 Windows 子系统上的 Ubuntu 中使用 Nano 编写它。当我尝试使用 cp 命令将文件复制到我的 C 驱动器所在的 /mnt/c 时,出现错误:“cp:无法创建常规文件‘mnt/c/fibo.c’:权限被拒绝”。有谁知道如何规避这个?
注意:我也尝试过使用 'sudo cp'。
我使用 Ubuntu 和 WSL 以及 zsh/bash shell。我的主机操作系统是 Windows 10。我已经弄清楚如何安装 Windows 外部驱动器:
sudo mkdir /mnt/d
sudo mount -t drvfs D: /mnt/d
Run Code Online (Sandbox Code Playgroud)
我很少插入这个驱动器,所以我想在插入时自动安装它。如果在插入驱动器然后启动新的 WSL 终端后出现这种情况,也没关系。
我不想将此命令放入某种.bashrc
类型的文件中,因为每次打开终端时都必须输入密码,这会带来更多麻烦,尤其是在 99% 的情况下,该命令无论如何都会失败。将它放入 bash 脚本中也没有帮助,因为我很少运行它,当我需要使用它时,我会忘记我首先创建了它。
那么,当 WSL 中可用时,有没有办法安装外部驱动器呢?
我不知道这是否是一个好的解决方案,但这告诉您如何关闭 sudo 的密码请求。这是我采取的路线:https ://superuser.com/a/1492456/89165
我在这里关注教程:https://docs.microsoft.com/en-us/windows/wsl/wsl2-mount-disk
我可以通过运行以下命令来获取驱动器列表:GET-CimInstance -query "SELECT * from Win32_DiskDrive"
它会产生以下输出:
PS C:\WINDOWS\system32> GET-CimInstance -query "SELECT * from Win32_DiskDrive"
DeviceID Caption Partitions Size Model
-------- ------- ---------- ---- -----
\\.\PHYSICALDRIVE0 SK hynix SC311 SATA 512GB 3 512105932800 SK hynix SC311 SATA 512GB
\\.\PHYSICALDRIVE1 Generic STORAGE DEVICE USB Device 0 Generic STORAGE DEVICE USB Device
\\.\PHYSICALDRIVE2 Generic STORAGE DEVICE USB Device 3 127861977600 Generic STORAGE DEVICE USB Device
\\.\PHYSICALDRIVE3 Generic STORAGE DEVICE USB Device 0 Generic STORAGE DEVICE USB Device
Run Code Online (Sandbox Code Playgroud)
我认为我尝试安装的驱动器是\\.\PHYSICALDRIVE2 …
windows-subsystem-for-linux ×6
windows-10 ×5
mount ×3
windows ×3
bash ×2
linux ×2
ubuntu ×2
event-log ×1
hard-drive ×1
ubuntu-16.04 ×1
usb-storage ×1
wsl2 ×1