使用VSCode和WSL/Rocky Linux时,switchml和_module_raw bash函数的问题

kcrjzv8t  于 6个月前  发布在  Vscode
关注(0)|答案(4)|浏览(106)

这个问题在所有扩展都被禁用时是否发生?:是的

  • VS Code 版本:1.87.0
  • OS 版本:Windows 10 version 22H2

重现步骤:

  1. 在 Windows 上使用 WSL 安装 Rocky Linux,启动它并使用 sudo dnf install code 安装 VSCode。
  2. code . 为例,在任何地方启动 VSCode。
  3. 在 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'
  1. 然后它给你一个命令提示符。
    这个问题对我来说很麻烦,因为,这是不容易重现的部分,我无法使用 module 命令加载我在 Rocky Linux 上安装的卸载模块。此外,它还阻止我调试我的应用程序,因为我无法将 VSCode 调试器附加到正在运行的进程,这对我来说更加痛苦。
    但是当我在另一个 Rocky Linux 中重现它时,我会收到这个错误信息,但我可以使用 module 命令,所以嗯,不是非常可重现的部分。但消息是相同的根本原因。
    我已经进行了“调查”,以找出问题的根本原因,以下是这次调查的结果 并非百分之百确定
  2. 显然,在启动新终端之前,甚至在 source ~/.bashrc 或 ~/.bash_profile 文件之前,它会 source 或执行此文件:/usr/share/Modules/init/bash
    bash.txt
  3. 当它这样做时,一些变量(如 _mlre 或 _mlv)在使用 ${} 进行解引用时尚未设置。
  4. 因此第一次出现这些问题时,它会退出并使 function switchml 和 _module_raw 未定义或为空。
    我还应该提到,我的第一个解决方案不再起作用,它是在我的 ~/.bashrc 文件中取消设置这些函数。其后果是我在那之后无法使用命令 module。
    而且像在这个其他 issue 建议的那样更改 /etc/profile.d/modules.sh 上的权限也不起作用。
pod7payv

pod7payv1#

does disabling shell integration fix this for you? terminal.integrated.shellIntegration.enabled: false

9jyewag0

9jyewag02#

不,很遗憾它没有解决这个问题。

w8ntj3qf

w8ntj3qf3#

在WSL2的AlmaloLinux 9上遇到了类似的问题。在此之前,我先确认一下这是否是一个单独的问题。

只有在通过WSL提示符打开VSCode时,才会出现这个问题。然后在VS Code的bash终端中遇到以下错误:

我意识到这与多行环境变量BASH_FUNC_module%%BASH_FUNC__module_raw%%=(see printenv output)有关。这些函数来自environment-modules包(source),它是LLVM的依赖项:llvm-toolset包。

我通过运行unset -f _module_raw && unset -f module来确认取消设置这些变量可以解决这个问题。这可能类似于多行环境变量的已修复问题#163564

zour9fqk

zour9fqk4#

我在使用Oracle Linux 9上的WSL 2时遇到了同样的问题。
首先启动WSL,然后运行codecode .(两种情况下的行为相同)。
在代码终端窗口中,我得到了:

bash: module: line 2: syntax error: unexpected end of file
bash: error importing function definition for `module'
bash: _module_raw: line 1: syntax error: unexpected end of file
bash: error importing function definition for `_module_raw'
/usr/bin/sh: module: line 2: syntax error: unexpected end of file
/usr/bin/sh: error importing function definition for `module'
/usr/bin/sh: _module_raw: line 1: syntax error: unexpected end of file
/usr/bin/sh: error importing function definition for `_module_raw'
/usr/bin/sh: module: line 2: syntax error: unexpected end of file
/usr/bin/sh: error importing function definition for `module'
/usr/bin/sh: _module_raw: line 1: syntax error: unexpected end of file
/usr/bin/sh: error importing function definition for `_module_raw'
/usr/bin/sh: module: line 2: syntax error: unexpected end of file
/usr/bin/sh: error importing function definition for `module'
/usr/bin/sh: _module_raw: line 1: syntax error: unexpected end of file
/usr/bin/sh: error importing function definition for `_module_raw'

根据@brydr的观察,如果我在code之前运行unset -f _module_raw && unset -f module,我就不会遇到这个错误。
我正在运行以下代码版本:

code --version
1.91.1
f1e16e1e6214d7c44d078b1f0607b2388f29d729
x64

相关问题