【发布时间】:2022-01-21 15:48:02
【问题描述】:
由于某种原因,直接从 WSL 调用 Windows 可执行文件(powershell.exe、ping.exe 等)时按预期工作,将输出重定向到文件或尝试将结果存储在变量中失败。
到目前为止我所尝试的:
❯ powershell.exe 'Write-Host Fart!'
Fart!
❯ powershell.exe 'Write-Host Fart!' > file
❯ cat file
❯ output=$(powershell.exe 'Write-Host Fart!')
❯ echo $output
如您所见,该命令本身就可以工作。但结合重定向或命令替换它不起作用。
编辑:重新启动 Windows 解决了该问题。我认为在上一次会议中,我以某种方式搞砸了 WSL2 及其与 Windows 的互操作性。还注意到其他 Windows 可执行文件(如 clip.exe)停止工作。我无法将内容传送到 Windows 剪贴板。
现在我重新启动,一切又恢复了。以为我要疯了
--
编辑:关于我的系统的一些信息。
> [System.Environment]::OSVersion.Version
Major Minor Build Revision
----- ----- ----- --------
10 0 19042 0
【问题讨论】:
-
我可以先提供帮助不大(但希望能提供信息)“它对我有用”。我运行了你的命令,
file确实闻到了Fart!的味道。与output=版本相同。所以有些问题——(1)您的 Windows 版本/版本是什么? (2) 你使用的是什么发行版? (3) 如果你安装不同的发行版,是否也有同样的问题? (4) 从wsl -e bash --noprofile --norc开始 - 问题是否仍然存在? --(提醒您可能不需要,但是)提醒将新信息编辑到问题中--谢谢! -
@NotTheDr01ds,哇,我刚刚在重新启动计算机后再次尝试,现在它可以工作了。我觉得我的 WSL2 出了点问题。还注意到像 clip.exe 这样的工具在 WSL 中停止工作。现在一切都恢复正常了。指出它对你有用,绝对有帮助,谢谢
-
酷 - 很高兴听到它这么简单。只是好奇——你是否试图用 Systemd、容器/命名空间、chroot 等做任何事情?这些是(除其他外)会干扰 Interop 套接字的东西。
-
不,不是那样的。只是在我的 Ansible 剧本上工作。现在我想起来了
wslview也停止了工作并返回了某种我不记得了的错误。也许我可以重现这个问题
标签: bash shell windows-subsystem-for-linux wsl-2