vscode Adapt the bash of busybox.

ddrv8njm  于 5个月前  发布在  Vscode
关注(0)|答案(6)|浏览(47)
  • VSCode 版本:1.74.2
  • 本地操作系统版本:Windows 11 版本 22621
  • 远程操作系统版本:Alpine Linux v3.17
  • 远程扩展/连接类型:WSL
  • 日志:

重现步骤:

  1. 启动一个终端。

我使用 busybox bash 作为 /bin/bash(本质上仍然是 busybox ash),这就是为什么没有 .bashrc
我希望 VS Code 服务器能在使用它之前判断它是否是一个真正的 bash,如果不是,将 bash 视为 ash。
当你尝试在本地进行此操作时,这个问题是否发生?:否
当你尝试在本地进行此操作且所有扩展都被禁用时,这个问题是否发生?:否

nhn9ugyo

nhn9ugyo1#

实际上,繁忙的box bash/ash并不支持builtin命令。我找到了一种方法,将/bin/ash设置为vscode的默认shell,而不是自动检测到的/bin/bash,所以我不知道这个问题是否还需要修复。

mfpqipee

mfpqipee2#

谢谢,这仍然是一个问题。我们应该在注入shell集成之前或者脚本开始时检测它是否是busybox。

p1tboqfb

p1tboqfb3#

我将为没有.bashrc文件的情况创建另一个问题,以便进行验证。

dvtswwa3

dvtswwa34#

检查 $BASH_VERSION 是否存在?这可能是最简单的方法。
当我删除读取 .bashrcbuiltin 命令的代码时,它仍然报告错误。

似乎 busybox bash/ash 与此脚本不兼容。
也许可以为 busybox bash/ash 编写一个注入脚本?

z2acfund

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来说,这是一个低风险的更改。

m1m5dgzv

m1m5dgzv6#

也许当我们检测到这不是一个真正的bash时,我们应该退出脚本,或者只执行一些必要的注入。否则,完全适应Busybox的bash将会变得过于复杂。

相关问题