exe - 当当前工作目录是 /mnt/c 的子目录时,为什么 .exes 在 Windows Subsystem for Linux 中看不到 /tmp 中的文件?
问题描述
当我在当前工作目录/mnt/c
或其子目录时从 WSL 中运行 .exe 文件时,似乎无法在/tmp
. 例如,cd /mnt/c; notepad.exe $(mktemp)
抛出“系统找不到指定的文件”,即使非 exe 可执行文件工作正常,例如cat $(mktemp)
. 请注意,mktemp
它本身可以正常工作,提供正确的输出并实际创建文件。
有趣的是,我注意到当当前工作目录为 时,这不会发生/
。在那里,notepad.exe $(mktemp)
工作正常。但是,当当前工作目录是/mnt/c
它或其子目录时,就会出现这种奇怪的行为。
为什么 WSL 中的 exe 可以看到/tmp
当前工作目录何时位于外部/mnt/c
,而不是内部?是什么导致这种情况发生?
如果重要的话,我在 WSL1 Ubuntu 18.04 LTS 上。
运行的输出ps awx
是notepad.exe $(mktemp)
1 ? Ssl 0:58 /init
5 tty1 Ss 0:00 /init
6 tty1 S 0:09 -bash
3227 tty1 S 0:00 /init /mnt/c/Windows/system32/notepad.exe /tmp/tmp.KQwVgByK8u
3228 tty2 Ss 0:00 /init
3229 tty2 S 0:00 -bash
3255 tty2 R 0:00 ps awx
进程 3227 的挂载信息是
=== /proc/3227/mountinfo ===
2 2 0:2 / / rw,noatime - lxfs rootfs rw
3 2 0:3 / /dev rw,noatime - tmpfs none rw,mode=755
4 2 0:4 / /sys rw,nosuid,nodev,noexec,noatime - sysfs sysfs rw
5 2 0:5 / /proc rw,nosuid,nodev,noexec,noatime - proc proc rw
6 3 0:6 / /dev/pts rw,nosuid,noexec,noatime - devpts devpts rw,gid=5,mode=620
7 2 0:7 / /run rw,nosuid,noexec,noatime - tmpfs none rw,mode=755
8 7 0:8 / /run/lock rw,nosuid,nodev,noexec,noatime - tmpfs none rw
9 7 0:9 / /run/shm rw,nosuid,nodev,noatime - tmpfs none rw
10 7 0:10 / /run/user rw,nosuid,nodev,noexec,noatime - tmpfs none rw,mode=755
11 5 0:11 / /proc/sys/fs/binfmt_misc rw,relatime - binfmt_misc binfmt_misc rw
12 4 0:12 / /sys/fs/cgroup rw,relatime - tmpfs cgroup rw,mode=755
13 12 0:13 / /sys/fs/cgroup/devices rw,relatime - cgroup cgroup rw,devices
14 2 0:14 / /mnt/c rw,noatime - drvfs C:\134 rw,uid=1000,gid=1000,case=off```
解决方案
推荐阅读
- hadoop - Ambari 无法重新启动:此版本的堆栈选择工具不支持包 hive-metastore
- bitcoind - 在 blockcypher 上验证比特币核心测试网交易
- reactjs - 从嵌套函数调用钩子
- python - 无法连接到带有 SQLalchemy、操作错误和接口错误的 mssql 服务器
- r - 如何编写高效的代码来导入多个 SAS 文件
- css - 如何借助变量将 HTML 属性值动态传递到量角器中的 CSS 选择器中?
- java - Java版本命令给出不同的结果
- azure - 天蓝色表存储:实体过滤器查询不会终止
- microsoft-cognitive - Microsoft-Cognitive 错误 429 既不是由频率也不是由大小引起的
- c# - 如何在c#中将.wav文件分成两部分