我可以检查终端是否由 Visual Studio Code 启动吗?

我可以检查终端是否由 Visual Studio Code 启动吗?

我有一个脚本,每当我打开终端时它都会运行(我将命令放在 .bashrc 中)。现在,当我打开 Visual Studio Code 时,该脚本显然也会在其中的内部终端中执行。我不希望这种情况发生。有没有办法检测终端实例是否由 VSCode 启动,以便我可以在这种情况下阻止脚本执行?(我使用 bash)

抱歉,如果这是一个愚蠢的问题,我对 Linux 和 bash 还很陌生。

答案1

TERM_PROGRAMVS Code在终端环境中设置标准环境变量来指示启动它的内容,因此您可以使用它来解决问题,而无需解析进程树:

if [[ "$TERM_PROGRAM" == "vscode" ]]; then
  exit 0
fi

# Rest of script...

此规则的一个例外是,如果扩展程序创建了终端并指定了很少使用的strictEnv标志。这些是扩展程序表示它希望完全控制环境的 shell。

答案2

使用这个可能重复的答案:https://askubuntu.com/a/1012277/307523

rick@alien:~$ echo $$
25119
───────────────────────────────────────────────────────────────────────────────────────────
rick@alien:~$ pstree -aps $$
systemd,1 splash fastboot kaslr
  └─lightdm,1026
      └─lightdm,1294 --session-child 12 19
          └─upstart,1838 --user
              └─gnome-terminal-,25109
                  └─bash,25119
                      └─pstree,5696 -aps 25119

环境变量$$返回当前正在运行的进程 PID(进程 ID),即 bash 终端。

pstree命令显示所调用的整个命令“树”。

相关内容