Обнаружение используемого терминального приложения (iTerm2)

Можно ли определить, какое терминальное приложение используется? Я хочу фактическое заявление, а не ТЕРМИН env в вопросе.

Я хотел бы обнаружить iTerm 2 / Terminal.app, чтобы я мог установить специфичные для OSX сопоставления клавиатуры, в противном случае ПК.

(См. Перемещение стрелки ALT+ между словами в zsh и iTerm2)

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)

Я могу придумать два ограничения:

  1. Если запустить по SSH, родитель будет sshd а не графическое приложение терминала.
  2. Если он выполняется в отдельном скрипте, он также напечатает этот скрипт.

Однако вы должны быть в состоянии grep выводит его и определяет, является ли один из родительских процессов iTerm.app или Terminal.app при локальном запуске.

Другие вопросы по тегам