Я недавно прыгнул с корабля, zsh
и я использую О мой Zsh! тема blinks
. Он выглядит очень хорошо в OSX Terminal, но очень плохо выглядит в терминале Android Studio.
Итак, мой вопрос: есть ли способ проверить, что этот сеанс был открыт в Android Studio, а не в OSX Terminal, и изменить zsh
тему в соответствии с этим?
java
, переключите тему.Ответы:
Поскольку никто не дал вам ответ, я пытаюсь, несмотря на то, что у меня совершенно другое программное обеспечение. Так что это общий ответ о том, как это сделать с любым программным обеспечением. На ум приходят два подхода:
1. Различные среды
Откройте Терминал и запустите
env > env.terminal
. Откройте Android Studio и запуститеenv > env.studio
. Теперь вы можете запустить любой терминалdiff -dby --suppress-common-lines env.terminal env.studio
(если у Mac OS X diff есть эти опции; если не-U1
работает достаточно хорошо).В качестве примера, вот разница между
xterm
иkonsole
на моей коробке Linux (примечание: интервал изменен, чтобы поместиться на странице):Некоторые из этих вещей явно шумят от того, как я запустил два разных терминала. Но другие нет. Если бы я хотел что-то только в XTerm, то
if [ -n "$XTERM_VERSION" ]
, казалось бы, неплохой способ сделать это. Точно так же для Konsole$KONSOLE_PROFILE_NAME
было бы неплохо (и, возможно, несколько других тоже).2. Различные родительские процессы
Оболочка знает свой собственный идентификатор процесса, к нему можно получить доступ через
$$
. POSIX также должен$PPID
получить родительский PID напрямую, поэтому я подозреваю, что у вас это тоже есть в zsh. Если нет,ps
можете получить это для васppid=$(ps -o ppid= $$)
. Затем вы можете запустить команду, также с помощью ps:(Вы можете попробовать
-o comm=
также).В сценарии оболочки это будет выглядеть примерно так:
Если вам нужно пойти дальше вверх по дереву процессов, вы можете использовать его,
ps
чтобы получить родительского родителя и т. Д.источник