当 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/