Puisque personne d'autre ne vous a donné de réponse, j'essaie malgré le fait d'avoir un logiciel complètement différent. C'est donc une réponse générique sur la façon de le faire avec n'importe quel logiciel. Deux approches me viennent à l'esprit:
1. Différents environnements
Ouvrez Terminal et exécutez env > env.terminal
. Ouvrez Android Studio et exécutez env > env.studio
. Maintenant, dans l'un ou l'autre terminal, vous pouvez exécuter diff -dby --suppress-common-lines env.terminal env.studio
(si Mac OS X diff a ces options; sinon-U1
fonctionne assez bien).
A titre d'exemple, voici la différence entre xterm
et konsole
sur ma box Linux (note: espacement modifié pour tenir sur la page):
> 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 <
Certaines de ces choses sont clairement du bruit de la façon dont j'ai lancé les deux terminaux différents. Mais d'autres ne le sont pas. Si je voulais quelque chose uniquement dans XTerm, if [ -n "$XTERM_VERSION" ]
cela semblerait être un très bon moyen de le faire. De même, pour Konsole, ce $KONSOLE_PROFILE_NAME
serait un bon (et probablement quelques-uns des autres aussi).
2. Différents processus parents
Un shell connaît son propre ID de processus, il est accessible via $$
. POSIX doit également $PPID
obtenir le PID parent directement, donc je soupçonne que vous l'avez aussi en zsh. Dans le cas contraire, ps
peut l' obtenir pour vous: ppid=$(ps -o ppid= $$)
. Vous pouvez ensuite exécuter la commande, également avec ps:
xterm:~$ ps -o args= $PPID
/usr/bin/xterm
konsole:~$ ps -o args= $PPID
/usr/bin/konsole
(Vous pouvez également essayer -o comm=
).
Dans un script shell, cela ressemblerait à quelque chose comme:
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
Si vous avez besoin d'aller plus loin dans l'arborescence des processus, vous pouvez utiliser ps
pour obtenir le parent du parent, etc.