我遇到一个问题,如果我输入explorer.exe .
wsl,什么都不会发生,也不会显示任何资源管理器窗口。但是,如果我先wsl -t Ubuntu-18.04
在 powershell 中运行并重新运行该命令,资源管理器将按预期打开。是什么原因造成的?我在 Windows 10 1909 上。
编辑:
但是,如果我从 powershell 运行,即使当前 Ubuntu-18.04 会话没有显示,窗口也会显示。
- 启动 powershell
wsl
explorer.exe .
答案1
我发现了这个问题。这是因为我使用任务计划程序在设备启动时运行 ssh 守护程序,并且“无论用户是否登录都运行”已打开(这个很重要因为如果它关闭,你就不会遇到这个问题)。我的bat
脚本包含
%windir%\System32\bash.exe -c 'sudo /bin/mkdir -p /var/run/sshd'
%windir%\System32\bash.exe -c 'sudo /usr/sbin/sshd -D'
启动sudo /usr/sbin/sshd -D
“卡住”的守护进程,导致 explorer.exe 无法以某种方式打开。这实际上导致任何 SSH 进入系统并运行任何 .exe 也不会返回任何输出,例如ssh user@thismachine "powershell.exe Get-Clipboard"
。
解决此问题的完美方法是:
https://gist.github.com/dentechy/de2be62b55cfd234681921d5a8b6be11#gistcomment-3036911
引用来源,以防被删除:
Another way without Task Scheduler: On the WSL put to the end of the /etc/sudoers file the following line: %sudo ALL=NOPASSWD: /etc/init.d/ssh start Put to the shell:Startup folder bat file with the content: powershell.exe "& 'C:\Windows\System32\bash.exe' -c 'sudo /etc/init.d/ssh start'" That's it! no sudo promt no Task Scheduler stuff no stucking daemon process like sudo /usr/sbin/sshd -D no WSL window open