Поскольку никто не дал вам ответ, я пытаюсь, несмотря на то, что у меня совершенно другое программное обеспечение. Так что это общий ответ о том, как это сделать с любым программным обеспечением. На ум приходят два подхода:
1. Различные среды
Откройте Терминал и запустите env > env.terminal
. Откройте Android Studio и запустите env > env.studio
. Теперь вы можете запустить любой терминал diff -dby --suppress-common-lines env.terminal env.studio
(если у Mac OS X diff есть эти опции; если не -U1
работает достаточно хорошо).
В качестве примера, вот разница между xterm
и konsole
на моей коробке Linux (примечание: интервал изменен, чтобы поместиться на странице):
> 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 <
Некоторые из этих вещей явно шумят от того, как я запустил два разных терминала. Но другие нет. Если бы я хотел что-то только в XTerm, то if [ -n "$XTERM_VERSION" ]
, казалось бы, неплохой способ сделать это. Точно так же для Konsole $KONSOLE_PROFILE_NAME
было бы неплохо (и, возможно, несколько других тоже).
2. Различные родительские процессы
Оболочка знает свой собственный идентификатор процесса, к нему можно получить доступ через $$
. POSIX также должен $PPID
получить родительский PID напрямую, поэтому я подозреваю, что у вас это тоже есть в zsh. Если нет, ps
можете получить это для вас ppid=$(ps -o ppid= $$)
. Затем вы можете запустить команду, также с помощью ps:
xterm:~$ ps -o args= $PPID
/usr/bin/xterm
konsole:~$ ps -o args= $PPID
/usr/bin/konsole
(Вы можете попробовать -o comm=
также).
В сценарии оболочки это будет выглядеть примерно так:
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
Если вам нужно пойти дальше вверх по дереву процессов, вы можете использовать его, ps
чтобы получить родительского родителя и т. Д.