Niedawno wskoczyłem na statek zsh
i używam Oh my Zsh! motyw blinks
. Wygląda bardzo ładnie w terminalu OSX, ale bardzo źle wygląda w terminalu Android Studio.
Więc mam pytanie, czy istnieje sposób, aby sprawdzić, czy ta sesja została otwarta w Android Studio, a nie w Terminalu OSX, i zmienić zsh
motyw zgodnie z tym?
java
, przełącz motyw.Odpowiedzi:
Ponieważ nikt inny nie dał ci odpowiedzi, próbuję pomimo posiadania zupełnie innego oprogramowania. Jest to więc ogólna odpowiedź na pytanie, jak to zrobić za pomocą dowolnego oprogramowania. Przychodzą mi na myśl dwa podejścia:
1. Różne środowiska
Otwórz terminal i uruchom
env > env.terminal
. Otwórz Android Studio i uruchomenv > env.studio
. Teraz możesz uruchomić dowolny terminaldiff -dby --suppress-common-lines env.terminal env.studio
(jeśli Mac OS X diff ma te opcje; jeśli nie-U1
działa wystarczająco dobrze).Na przykład, tutaj jest różnica pomiędzy
xterm
ikonsole
na moim Linux-ie (uwaga: odstępy zmodyfikowano, aby pasowały do strony):Niektóre z tych rzeczy są wyraźnie szumem z powodu uruchomienia dwóch różnych terminali. Ale inni nie są. Gdybym chciał czegoś tylko w XTerm,
if [ -n "$XTERM_VERSION" ]
wydaje się to całkiem dobrym sposobem na zrobienie tego. Podobnie dla Konsoli$KONSOLE_PROFILE_NAME
byłby dobry (i prawdopodobnie także kilku innych).2. Różne procesy nadrzędne
Powłoka zna swój własny identyfikator procesu, do którego można uzyskać dostęp za pośrednictwem
$$
. POSIX musi również$PPID
uzyskać bezpośrednio PID nadrzędny, więc podejrzewam, że masz go również w Zsh. Jeśli nie, tops
może się to dla Ciebie:ppid=$(ps -o ppid= $$)
. Następnie możesz uruchomić polecenie, również za pomocą ps:(Możesz także spróbować
-o comm=
).W skrypcie powłoki wyglądałoby to tak:
Jeśli chcesz przejść dalej w górę drzewa procesów, możesz użyć,
ps
aby uzyskać rodzica rodzica itp.źródło