Vì không ai khác đưa ra câu trả lời cho bạn, tôi đang cố gắng mặc dù có phần mềm hoàn toàn khác. Vì vậy, đây là một câu trả lời chung chung về cách làm điều đó với bất kỳ phần mềm. Có hai cách tiếp cận mà bạn nghĩ đến:
1. Môi trường khác nhau
Mở Terminal và chạy env > env.terminal
. Mở Android Studio và chạy env > env.studio
. Bây giờ, trong một trong hai thiết bị đầu cuối, bạn có thể chạy diff -dby --suppress-common-lines env.terminal env.studio
(nếu Mac OS X diff có các tùy chọn đó; nếu không -U1
hoạt động đủ tốt).
Ví dụ, đây là sự khác biệt giữa xterm
và konsole
trên hộp Linux của tôi (lưu ý: khoảng cách được sửa đổi để phù hợp trên trang):
> 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 <
Một số thứ đó rõ ràng là tiếng ồn từ cách tôi khởi chạy hai thiết bị đầu cuối khác nhau. Nhưng những người khác thì không. Nếu tôi muốn một cái gì đó chỉ trong XTerm, thì if [ -n "$XTERM_VERSION" ]
có vẻ là một cách khá tốt để làm điều đó. Tương tự, đối với Konsole, $KONSOLE_PROFILE_NAME
sẽ là một điều tốt (và có lẽ một vài trong số những người khác nữa).
2. Các quá trình cha mẹ khác nhau
Một shell biết ID tiến trình riêng của nó, nó có thể được truy cập thông qua $$
. POSIX cũng $PPID
phải nhận được bộ cha mẹ trực tiếp, vì vậy tôi nghi ngờ bạn cũng có cái đó trong zsh. Nếu không, ps
có thể lấy nó cho bạn : ppid=$(ps -o ppid= $$)
. Sau đó, bạn có thể nhận được lệnh chạy, cũng với ps:
xterm:~$ ps -o args= $PPID
/usr/bin/xterm
konsole:~$ ps -o args= $PPID
/usr/bin/konsole
(Bạn cũng có thể thử -o comm=
).
Trong một kịch bản shell, nó sẽ trông giống như:
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
Nếu bạn cần đi xa hơn lên cây quy trình, bạn có thể sử dụng ps
để lấy cha mẹ của cha mẹ, v.v.