Mic*_*lav 5 command-line visual-studio-code
我有一个脚本,每当我打开终端时都会运行它(我将命令放在 .bashrc 中)。现在,当我打开 Visual Studio Code 时,脚本显然也在其中的内部终端中执行。我不希望这种情况发生。有什么方法可以检测终端实例是否由 VSCode 启动,以便在这种情况下阻止脚本执行?(我使用bash)
对不起,如果这是一个愚蠢的问题,我对 Linux 和 bash 还是很陌生。
VS CodeTERM_PROGRAM在终端环境中设置标准环境变量以指示启动它的内容,因此您可以使用它解决您的问题,而无需解析进程树:
if [[ "$TERM_PROGRAM" == "vscode" ]]; then
exit 0
fi
# Rest of script...
Run Code Online (Sandbox Code Playgroud)
使用这个可能重复的答案:https://askubuntu.com/a/1012277/307523
\n\nrick@alien:~$ echo $$\n25119\n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\nrick@alien:~$ pstree -aps $$\nsystemd,1 splash fastboot kaslr\n \xe2\x94\x94\xe2\x94\x80lightdm,1026\n \xe2\x94\x94\xe2\x94\x80lightdm,1294 --session-child 12 19\n \xe2\x94\x94\xe2\x94\x80upstart,1838 --user\n \xe2\x94\x94\xe2\x94\x80gnome-terminal-,25109\n \xe2\x94\x94\xe2\x94\x80bash,25119\n \xe2\x94\x94\xe2\x94\x80pstree,5696 -aps 25119\nRun Code Online (Sandbox Code Playgroud)\n\n环境变量$$返回当前正在运行的进程 PID(进程 ID),即 bash 终端。
该pstree命令显示了所调用命令的整个“树”。