1

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

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

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

2 ответа2

0

Вам необходимо переслать SSH локальные переменные среды, как описано здесь:

http://groups.google.com/group/iterm2-discuss/msg/7cc214c487d31bc8

0

Я сделал следующий скрипт:

#!/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 при локальном запуске.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .