ubuntu - 有没有办法测试 VS Code 是否在 Ubuntu 上解析我的 shell 环境?

标签 ubuntu visual-studio-code

当 VS Code 从事件(即通过 UI)启动时,我收到一条错误消息,“无法解析您的 shell 环境:来自生成的 shell 的意外退出代码(代码 1,信号 null)”。发生这种情况是因为我的 rc 文件中的最后一个 block (zsh,在这里并不重要)是:

if command -v tmux &> /dev/null \
   && [ -n "$PS1" ] \
   && [[ ! "$TERM" =~ screen ]] \
   && [[ ! "$TERM" =~ tmux ]] \
   && [ -z "$TMUX" ] \
   && [[ "$TERM_PROGRAM" != "vscode" ]]; then
  exec tmux
fi
我得到了守卫的 tmux 特定部分 here和代码特定部分 here .但是,当代码运行时,“运行(或'解析')shell 环境的小进程”描述了here。 , $TERM_PROGRAM似乎没有设置,所以 exec tmux仍在运行,因此出现错误。
如何检测环境解析器正在运行?它是否设置了我可以测试的任何其他变量?
编辑 : 我意识到我可以在我的 rc 中列出环境文件,我发现了一些以 VSCODE_ 为前缀的变量,即以下:
VSCODE_CODE_CACHE_PATH
VSCODE_CWD
VSCODE_IPC_HOOK
VSCODE_NLS_CONFIG
VSCODE_PID
在这种情况下,对这些中的任何一个进行测试是否可靠?

最佳答案

Checking the process tree是在任一场景(集成终端或环境解析过程)中执行此操作的一致且可靠的方法。具体来说,我的.zshrc现在结束如下:

if ... (tmux conditions) \
   && ! pstree -s $$ | grep -wq code; then
  exec tmux
fi

关于ubuntu - 有没有办法测试 VS Code 是否在 Ubuntu 上解析我的 shell 环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69578546/

相关文章:

node.js - sh : 1: node: not found (npm ERR! yorkie@1.0.3 安装)

git - 使用 Ubuntu Git 和 msysgit 直接处理相同的文件

linux - DbVisualizer.rpm 没有转换为 .deb?

在 VS Code 中找不到 Git

visual-studio-code - Linux Mint 上的 Vscode 多行编辑/选择

linux - 如何使用 procps-3.2.8 列出所有正在运行的进程?

ubuntu - 打开终结器,但是有根终端

android - Nativescript获得调试以在VS Code中工作

visual-studio-code - VSCode 和 clang 格式 : use my own file extension

python - Pylance:找不到带有子模块的 native 库的 stub