首页 > 解决方案 > 当当前工作目录是 /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 awxnotepad.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```

标签: exewindows-subsystem-for-linuxtmp

解决方案


推荐阅读