如何检查 VS Code 集成终端中是否运行了 shell 脚本/Vim?

问题描述 投票:0回答:3

问题

问题如标题所述。

总而言之,我试图让 bash 脚本和 Vim 在 VS Code 的集成终端中运行时表现不同。

我发现的东西

我设法找到了其他几个 Stack Overflow 问题,但它们与操作系统的检测有关:
- 如何检查是否在 Cygwin、Mac 或 Linux 中运行?
- 如何从 Bash 脚本检测操作系统?

bash shell vim visual-studio-code zsh
3个回答
21
投票

通过检查 vscode 终端中的 shell 变量,您可以看到它设置了

TERM_PROGRAM=vscode
。在我的 .bash_profile 中,我有以下内容并且效果很好:

if [ "$TERM_PROGRAM" == "vscode" ]; then
    # some stuff
else
    # other stuff
fi

0
投票

你可以检查父进程,直到它匹配或者你发现PID==1

#! /bin/bash

pid=$$
until (( pid == 1 ))
do
    [[ $(ps -o command= -p $pid) =~ Code ]] && break
    pid=$(ps -o ppid= $pid)
done

(( pid != 1 )) && echo "VS Code"

检查

man ps
以防您有不同的选择


0
投票

您可以检查

TERM_PROGRAM
环境变量是否设置为
vscode

初始化此变量的源代码可以在terminalEnvironment.ts中的addTerminalEnvironmentKeys中找到

here

您可以在 VS Code 自己的代码库中找到一些特定于 shell 的语法示例,用于检查此环境变量的值,其中它检查变量以确定是否运行其 shell 集成脚本此处以及文档手动运行这些 shell 集成脚本.

我不认为

TERM_PROGRAM
是由任何更广泛的标准定义的。这似乎只是许多终端模拟器按照惯例实现的一个功能。

如果您想检查 VS Code 版本,还有一个

TERM_PROGRAM_VERSION
变量。

© www.soinside.com 2019 - 2024. All rights reserved.