Ponieważ nikt inny nie dał ci odpowiedzi, próbuję pomimo posiadania zupełnie innego oprogramowania. Jest to więc ogólna odpowiedź na pytanie, jak to zrobić za pomocą dowolnego oprogramowania. Przychodzą mi na myśl dwa podejścia:
1. Różne środowiska
Otwórz terminal i uruchom env > env.terminal
. Otwórz Android Studio i uruchom env > env.studio
. Teraz możesz uruchomić dowolny terminal diff -dby --suppress-common-lines env.terminal env.studio
(jeśli Mac OS X diff ma te opcje; jeśli nie -U1
działa wystarczająco dobrze).
Na przykład, tutaj jest różnica pomiędzy xterm
i konsole
na moim Linux-ie (uwaga: odstępy zmodyfikowano, aby pasowały do strony):
> 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 <
Niektóre z tych rzeczy są wyraźnie szumem z powodu uruchomienia dwóch różnych terminali. Ale inni nie są. Gdybym chciał czegoś tylko w XTerm, if [ -n "$XTERM_VERSION" ]
wydaje się to całkiem dobrym sposobem na zrobienie tego. Podobnie dla Konsoli $KONSOLE_PROFILE_NAME
byłby dobry (i prawdopodobnie także kilku innych).
2. Różne procesy nadrzędne
Powłoka zna swój własny identyfikator procesu, do którego można uzyskać dostęp za pośrednictwem $$
. POSIX musi również $PPID
uzyskać bezpośrednio PID nadrzędny, więc podejrzewam, że masz go również w Zsh. Jeśli nie, to ps
może się to dla Ciebie: ppid=$(ps -o ppid= $$)
. Następnie możesz uruchomić polecenie, również za pomocą ps:
xterm:~$ ps -o args= $PPID
/usr/bin/xterm
konsole:~$ ps -o args= $PPID
/usr/bin/konsole
(Możesz także spróbować -o comm=
).
W skrypcie powłoki wyglądałoby to tak:
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
Jeśli chcesz przejść dalej w górę drzewa procesów, możesz użyć, ps
aby uzyskać rodzica rodzica itp.