WSL 自行输入

Gab*_*son 15 windows-subsystem-for-linux wsl2

我在使用 WSL 时遇到一些问题。

如果我以普通用户身份运行 WSL,终端偶尔会开始自行输入。因此,在需要任何输入(例如 vi/vim、nano 等)的情况下使用 WSL 是不可能的。

几个例子:

  • 我正在尝试更改密码,然后^@^@^@^@自行输入了一些密码:

    gabriel@PC:~$ passwd
    Changing password for gabriel.
    Current password:
    ^@^@^@^@passwd: Authentication token manipulation error
    passwd: password unchanged
    gabriel@PC:~$
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用 vi/vim 时,它会退出插入模式或在屏幕上键入。

  • 当使用nano时,它只输入一些换行符(即\n)。

如果我以管理员身份启动 WSL,则不会出现这些问题。

有谁知道为什么会发生这种情况?

Gab*_*son 22

阅读 @Cpt.Whale 评论的问题和 Microsoft 的此文档(about_Character_Encoding)后

我的问题解决方案是:
更改默认编码值(请参阅上面的链接)

$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
Run Code Online (Sandbox Code Playgroud)

  • 太棒了 - 很高兴听到您解决了这个问题!我猜这还有其他一些“根本原因”,因为仅仅为了运行正常的 WSL/Linux 应用程序/发行版而必须这样做是不正常的。如果您碰巧在某个时候弄清楚了该部分,请记住更新答案。不过,绝对只支持“解决方法”。另外,不要忘记几天后回来接受您的答案(或检查是否有人有您可能想要接受的其他替代方案) - 谢谢! (4认同)
  • 嘿,Gabriel,从你的问题看来,启动 cmd shell,然后启动 wsl(大概使用 bash 或其他的 linux 操作系统 shell),仍然会导致奇怪的字符,即使 powershell 从未运行过(?)但这个解决方案看起来像它只能在 powershell 中工作吗?也许您可以编辑您的问题以澄清您在哪里运行 powershell 以及哪个版本(特别是 v6 或 v6 以下)。 (2认同)