- VSCode 版本:1.74.2
- 本地操作系统版本:Windows 11 版本 22621
- 远程操作系统版本:Alpine Linux v3.17
- 远程扩展/连接类型:WSL
- 日志:
重现步骤:
- 启动一个终端。
我使用 busybox bash 作为 /bin/bash
(本质上仍然是 busybox ash),这就是为什么没有 .bashrc
。
我希望 VS Code 服务器能在使用它之前判断它是否是一个真正的 bash,如果不是,将 bash 视为 ash。
当你尝试在本地进行此操作时,这个问题是否发生?:否
当你尝试在本地进行此操作且所有扩展都被禁用时,这个问题是否发生?:否
6条答案
按热度按时间nhn9ugyo1#
实际上,繁忙的box bash/ash并不支持
builtin
命令。我找到了一种方法,将/bin/ash
设置为vscode的默认shell,而不是自动检测到的/bin/bash
,所以我不知道这个问题是否还需要修复。mfpqipee2#
谢谢,这仍然是一个问题。我们应该在注入shell集成之前或者脚本开始时检测它是否是busybox。
p1tboqfb3#
我将为没有
.bashrc
文件的情况创建另一个问题,以便进行验证。dvtswwa34#
检查
$BASH_VERSION
是否存在?这可能是最简单的方法。当我删除读取
.bashrc
和builtin
命令的代码时,它仍然报告错误。似乎 busybox bash/ash 与此脚本不兼容。
也许可以为 busybox bash/ash 编写一个注入脚本?
z2acfund5#
这是可供贡献的内容。我相信所有这些只需要在这里添加一个
if
,如果它忙于设置,则可以提前退出:vscode/src/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh
在d70a46b中的第6行到第9行
| | # 防止脚本在设置时递归 |
| | if -n"${VSCODE_SHELL_INTEGRATION:-}" ;then |
| | builtinreturn |
| | fi |
当然,它需要进行测试,并且对于常规的bash来说,这是一个低风险的更改。
m1m5dgzv6#
也许当我们检测到这不是一个真正的bash时,我们应该退出脚本,或者只执行一些必要的注入。否则,完全适应Busybox的bash将会变得过于复杂。