Обнаружение используемого терминального приложения (iTerm2)
Можно ли определить, какое терминальное приложение используется? Я хочу фактическое заявление, а не ТЕРМИН env в вопросе.
Я хотел бы обнаружить iTerm 2 / Terminal.app, чтобы я мог установить специфичные для OSX сопоставления клавиатуры, в противном случае ПК.
2 ответа
Вам необходимо переслать SSH локальные переменные среды, как описано здесь:
http://groups.google.com/group/iterm2-discuss/msg/7cc214c487d31bc8
Я сделал следующий скрипт:
#!/bin/bash
pid=$$ # Current PID
ps -f $$ | head -n 1 # Show the header of ps
while [ $pid -gt 0 ]; do # No more parent when we reach 0 (the kernel)
ps -f $pid | tail -n +2 # ps current pid and remove header
pid=$(ps -o ppid $pid|tail -n 1) # Get parent pid
done
Принимает текущий PID ($$
в bash) и рекурсивно получает родительский PID, пока мы не достигнем 0 (который является ядром), печатая ps -f
вывод по пути (и заголовок для начала, с ps -f | head -n 1
)
Я могу придумать два ограничения:
- Если запустить по SSH, родитель будет
sshd
а не графическое приложение терминала. - Если он выполняется в отдельном скрипте, он также напечатает этот скрипт.
Однако вы должны быть в состоянии grep
выводит его и определяет, является ли один из родительских процессов iTerm.app или Terminal.app при локальном запуске.