这个问题在所有扩展都被禁用时是否发生?:是的
- VS Code 版本:1.87.0
- OS 版本:Windows 10 version 22H2
重现步骤:
- 在 Windows 上使用 WSL 安装 Rocky Linux,启动它并使用
sudo dnf install code
安装 VSCode。 - 以
code .
为例,在任何地方启动 VSCode。 - 在 VSCode 中,启动一个新的终端,它应该打印类似这样的内容:
bash: switchml: line 1: syntax error: unexpected end of file
bash: error importing function definition for `switchml'
bash: _module_raw: line 1: syntax error: unexpected end of file
bash: error importing function definition for `_module_raw'
/bin/sh: switchml: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `switchml'
/bin/sh: _module_raw: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `_module_raw'
/bin/sh: switchml: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `switchml'
/bin/sh: _module_raw: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `_module_raw'
/bin/sh: switchml: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `switchml'
/bin/sh: _module_raw: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `_module_raw'
- 然后它给你一个命令提示符。
这个问题对我来说很麻烦,因为,这是不容易重现的部分,我无法使用 module 命令加载我在 Rocky Linux 上安装的卸载模块。此外,它还阻止我调试我的应用程序,因为我无法将 VSCode 调试器附加到正在运行的进程,这对我来说更加痛苦。
但是当我在另一个 Rocky Linux 中重现它时,我会收到这个错误信息,但我可以使用 module 命令,所以嗯,不是非常可重现的部分。但消息是相同的根本原因。
我已经进行了“调查”,以找出问题的根本原因,以下是这次调查的结果 并非百分之百确定 。 - 显然,在启动新终端之前,甚至在 source ~/.bashrc 或 ~/.bash_profile 文件之前,它会 source 或执行此文件:/usr/share/Modules/init/bash
bash.txt - 当它这样做时,一些变量(如 _mlre 或 _mlv)在使用 ${} 进行解引用时尚未设置。
- 因此第一次出现这些问题时,它会退出并使 function switchml 和 _module_raw 未定义或为空。
我还应该提到,我的第一个解决方案不再起作用,它是在我的 ~/.bashrc 文件中取消设置这些函数。其后果是我在那之后无法使用命令 module。
而且像在这个其他 issue 建议的那样更改 /etc/profile.d/modules.sh 上的权限也不起作用。
4条答案
按热度按时间pod7payv1#
does disabling shell integration fix this for you?
terminal.integrated.shellIntegration.enabled: false
9jyewag02#
不,很遗憾它没有解决这个问题。
w8ntj3qf3#
在WSL2的AlmaloLinux 9上遇到了类似的问题。在此之前,我先确认一下这是否是一个单独的问题。
只有在通过WSL提示符打开VSCode时,才会出现这个问题。然后在VS Code的bash终端中遇到以下错误:
我意识到这与多行环境变量
BASH_FUNC_module%%
和BASH_FUNC__module_raw%%=
(seeprintenv
output)有关。这些函数来自environment-modules
包(source),它是LLVM的依赖项:llvm-toolset
包。我通过运行
unset -f _module_raw && unset -f module
来确认取消设置这些变量可以解决这个问题。这可能类似于多行环境变量的已修复问题#163564。zour9fqk4#
我在使用Oracle Linux 9上的WSL 2时遇到了同样的问题。
首先启动WSL,然后运行
code
或code .
(两种情况下的行为相同)。在代码终端窗口中,我得到了:
根据@brydr的观察,如果我在
code
之前运行unset -f _module_raw && unset -f module
,我就不会遇到这个错误。我正在运行以下代码版本: