나는 최근에 뛰어 들어 zsh
사용하고 있습니다오 마이 Zsh!주제 blinks
. OSX 터미널에서는 정말 좋아 보이지만 Android Studio 터미널에서는 형편없어 보입니다.
그래서 내 질문은이 세션이 OSX 터미널 대신 Android Studio에서 열려 있는지 확인하고 zsh
이에 따라 테마를 변경하는 방법이 있습니까?
답변1
아무도 당신에게 답할 수 없기 때문에 완전히 다른 소프트웨어를 가지고 있음에도 불구하고 여전히 시도해 보고 있습니다. 이 작업을 수행하는 방법에 대한 일반적인 답변은 다음과 같습니다.어느소프트웨어. 저는 두 가지 방법을 생각했습니다.
1. 다양한 환경
터미널을 열고 을 실행합니다 env > env.terminal
. Android Studio를 열고 실행합니다 env > env.studio
. 이제 두 터미널 중 하나에서 실행할 수 있습니다 diff -dby --suppress-common-lines env.terminal env.studio
(Mac OS X diff에 해당 옵션이 있는 경우, -U1
제대로 작동하지 않는 경우).
예를 들어, 내 Linux 컴퓨터와 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. 상위 프로세스가 다릅니다.
쉘은 자체 프로세스 ID를 알고 있으며 $$
POSIX는 $PPID
상위 PID를 직접 가져와야 하므로 zsh에도 이 ID가 있는 것으로 생각됩니다. 그렇지 않은 경우 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
부모의 부모 가져오기 등을 사용할 수 있습니다.