Da Ihnen sonst niemand eine Antwort gegeben hat, versuche ich es trotz völlig anderer Software. Das ist also eine generische Antwort darauf, wie man es mit jeder Software macht. Es gibt zwei Ansätze, die in den Sinn kommen:
1. Unterschiedliche Umgebungen
Öffnen Sie das Terminal und führen Sie es aus env > env.terminal
. Öffnen Sie Android Studio und führen Sie es aus env > env.studio
. Jetzt können Sie in beiden Terminals ausführen diff -dby --suppress-common-lines env.terminal env.studio
(wenn Mac OS X diff diese Optionen hat; wenn dies nicht -U1
gut genug funktioniert).
Als Beispiel ist hier der Unterschied zwischen xterm
und konsole
auf meiner Linux-Box (Hinweis: Abstand geändert, um auf die Seite zu passen):
> PROFILEHOME=
> SHELL_SESSION_ID=1e8d5ab2d16641668485f991a1beffe3
> QSG_RENDER_LOOP=
> COLORTERM=truecolor
XTERM_SHELL=/bin/bash <
> KONSOLE_DBUS_SESSION=/Sessions/1
XTERM_VERSION=XTerm(327) | KONSOLE_DBUS_WINDOW=/Windows/1
TERM=xterm <
> TERM=xterm-256color
> KONSOLE_DBUS_SERVICE=:1.1514
> QMLSCENE_DEVICE=
> KONSOLE_PROFILE_NAME=Default
> COLORFGBG=15;0
WINDOWID=83886094 | WINDOWID=115343366
XAUTHORITY=/tmp/xauth-1000-_0 | XAUTHORITY=/home/anthony/.Xauthority
KDED_STARTED_BY_KDEINIT=1 <
XTERM_LOCALE=en_US.UTF-8 <
Einiges davon ist eindeutig ein Geräusch von dem Start der beiden verschiedenen Terminals. Andere aber nicht. Wenn ich etwas nur in XTerm wollte, dann if [ -n "$XTERM_VERSION" ]
wäre das anscheinend ein ziemlich guter Weg, dies zu tun. Ähnlich $KONSOLE_PROFILE_NAME
wäre es für Konsole gut (und wahrscheinlich auch für einige andere).
2. Unterschiedliche übergeordnete Prozesse
Eine Shell kennt ihre eigene Prozess-ID, über die auf sie zugegriffen werden kann $$
. POSIX muss auch $PPID
die übergeordnete PID direkt abrufen, also habe ich den Verdacht, dass Sie diese auch in zsh haben. Wenn nicht, ps
kann es für Sie: ppid=$(ps -o ppid= $$)
. Sie können dann den Befehl ausführen lassen, auch mit ps:
xterm:~$ ps -o args= $PPID
/usr/bin/xterm
konsole:~$ ps -o args= $PPID
/usr/bin/konsole
(Du kannst es auch versuchen -o comm=
).
In einem Shell-Skript würde es ungefähr so aussehen:
ppid=$(ps -o ppid= $$) # if you don't have PPID for some reason
if [ "$(ps -o args= $ppid)" = "/usr/bin/xterm" ]; then
echo "do xterm stuff"
fi
Wenn Sie den Prozessbaum weiter nach oben verschieben möchten, können Sie ps
den übergeordneten Teil des übergeordneten Teils usw. abrufen.