Karena tidak ada orang lain yang memberi Anda jawaban, saya mencoba walaupun memiliki perangkat lunak yang sama sekali berbeda. Jadi ini adalah jawaban umum tentang cara melakukannya dengan perangkat lunak apa pun . Ada dua pendekatan yang muncul di pikiran:
1. Lingkungan yang berbeda
Buka Terminal, dan jalankan env > env.terminal
. Buka Android Studio, dan jalankan env > env.studio
. Sekarang, di terminal mana pun, Anda dapat menjalankan diff -dby --suppress-common-lines env.terminal env.studio
(jika Mac OS X diff memiliki opsi-opsi itu; jika tidak -U1
bekerja dengan cukup baik).
Sebagai contoh, berikut adalah perbedaan antara xterm
dan konsole
pada kotak Linux saya (catatan: spasi dimodifikasi agar sesuai pada halaman):
> 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 <
Beberapa dari hal itu jelas berisik dari cara saya meluncurkan dua terminal yang berbeda. Tetapi yang lain tidak. Jika saya menginginkan sesuatu hanya di XTerm, maka if [ -n "$XTERM_VERSION" ]
sepertinya akan menjadi cara yang cukup baik untuk melakukan itu. Demikian pula, untuk Konsole, $KONSOLE_PROFILE_NAME
akan menjadi yang baik (dan mungkin beberapa yang lain juga).
2. Proses induk yang berbeda
Shell mengetahui ID prosesnya sendiri, dapat diakses melalui $$
. POSIX juga harus $PPID
mendapatkan PID induk secara langsung, jadi saya curiga Anda memilikinya di zsh juga. Jika tidak, ps
bisa mendapatkannya untuk Anda: ppid=$(ps -o ppid= $$)
. Anda kemudian dapat menjalankan perintah, juga dengan ps:
xterm:~$ ps -o args= $PPID
/usr/bin/xterm
konsole:~$ ps -o args= $PPID
/usr/bin/konsole
(Anda dapat mencoba -o comm=
juga).
Dalam skrip shell, itu akan terlihat seperti:
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
Jika Anda perlu melangkah lebih jauh ke atas pohon proses, Anda dapat menggunakan ps
untuk mendapatkan orang tua orang tua, dll.