Sie könnten es wahrscheinlich tun, indem Sie die Vorfahren der Shell zurückgehen und herausfinden, ob sie von etwas gestartet wurde, das "Ihnen" entspricht, oder von einem anderen Programm.
Rufen Sie die PID (Prozess-ID) der Shell und daraus die PPID (übergeordnete Prozess-ID) ab. Gehen Sie weiter, bis Sie zu etwas kommen, das Ihnen sagt, woher es kommt. Möglicherweise müssen Sie mit Ihrem System experimentieren - zumindest weiß ich nicht, ob es universell ist.
Holen Sie sich beispielsweise auf meinem System die PID einer Shell und ps
zeigen Sie damit an, dass es sich um Folgendes handelt bash
:
$ echo $$
18852
$ ps --pid 18852
PID TTY TIME CMD
18852 pts/1 00:00:00 bash
Holen Sie sich die PPID von 18852:
$ ps -o ppid= -p 18852
18842
Finden Sie heraus, was die PPID (18842) ist:
$ ps --pid 18842
PID TTY TIME CMD
18842 ? 00:00:02 gnome-terminal
Wir können sehen, dass es sich um ein Gnome-Terminal handelt, dh um das Terminal-Emulator- / Terminal-Fenster. Vielleicht ist das gut genug für Sie, wenn Ihre vom anderen Programm gestartete Shell nicht in einem Terminalemulatorfenster ausgeführt wird.
Wenn es nicht gut genug ist, gehe ein anderes Level hinauf:
$ ps -o ppid= -p 18842
2313
$ ps --pid 2313
PID TTY TIME CMD
2313 ? 00:00:00 init
Dies sagt uns, dass gnome-terminal
von gestartet wurde init
. Ich vermute, dass Ihre Shell, die von einem anderen Programm gestartet wurde, dort etwas anderes haben wird.
env
Befehl aus. Überprüfen Sie, ob es eine VS-spezifische Variable gibt, die wir verwenden können.