Оскільки ніхто більше не дав тобі відповіді, я намагаюся, не маючи зовсім іншого програмного забезпечення. Отже, це загальна відповідь про те, як це зробити з будь-яким програмним забезпеченням. Існують два підходи:
1. Різні середовища
Відкрийте термінал і запустіть env > env.terminal
. Відкрийте Android Studio і запустіть env > env.studio
. Тепер у будь-якому терміналі ви можете запускатись diff -dby --suppress-common-lines env.terminal env.studio
(якщо у Mac OS X diff є ці параметри; якщо вона недостатньо -U1
працює).
Як приклад, ось різниця між моїм вікном Linux xterm
і konsole
на ньому (зауважте: проміжок змінено для розміщення на сторінці):
> 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
для отримання батьківського батьківського і т.д.