Você provavelmente poderia fazê-lo andando de volta pela ancestralidade do shell e descobrindo se ele foi iniciado por algo que equivale a "você" ou outro programa.
Obtenha o PID do shell (ID do processo) e, a partir dele, seu PPID (ID do processo pai). Continue subindo até chegar a algo que lhe diga de onde veio. Você pode precisar experimentar em seu sistema - pelo menos, não sei se será universal.
Por exemplo, no meu sistema, pegue o PID de um shell e use ps
para mostrar que é bash
:
$ echo $$
18852
$ ps --pid 18852
PID TTY TIME CMD
18852 pts/1 00:00:00 bash
Obtenha o PPID de 18852:
$ ps -o ppid= -p 18852
18842
Descubra o que o PPID (18842) é:
$ ps --pid 18842
PID TTY TIME CMD
18842 ? 00:00:02 gnome-terminal
Podemos ver que é gnome-terminal, ou seja, a janela do terminal / emulador de terminal. Talvez seja bom o suficiente para você, se o seu shell lançado pelo outro programa não estiver sendo executado em uma janela do emulador de terminal.
Se não for bom o suficiente, suba outro nível:
$ ps -o ppid= -p 18842
2313
$ ps --pid 2313
PID TTY TIME CMD
2313 ? 00:00:00 init
Isso nos diz que gnome-terminal
foi iniciado por init
. Eu suspeito que seu shell iniciado por outro programa terá algo diferente lá.