И не говорите « $TERM
» - это всегда xterm
.
Как bash
скрипт может сказать, в каком терминале он работает, в частности, это iTerm, Terminal.app или на самом деле xterm?
Я спрашиваю, потому что reset
не работает из коробки на Terminal.app и iTerm2. Однако iTerm2 распознает управляющую последовательность для сброса терминала (\x1b]50;ClearScrollback\x07
), и, если бы я мог его обнаружить, я мог бы переопределить reset
с помощью псевдонима, который делает правильные вещи. На самом деле, Terminal.app не хватает последовательности сброса, и люди прибегают к нелепым хакерским действиям, чтобы взломать это.
Моя конечная цель здесь - выполнить reset
одинаково, работаю ли я на OS X или Linux, работаю локально или удаленно через SSH. (Я не хочу пытаться вспомнить, какие из них полезны, и полезно выполнить reset && command-that-outputs-a-bunch
и выполнить начальную работу.) Terminal.app и iTerm вносят рывок в этот план, неправильно осуществляя reset
.
Это означает, что просто переопределить reset
не совсем так: если я на машине с Linux, нужно знать, использую ли я gnome-terminal
или iTerm, чтобы отправить правильную escape-последовательность.
Есть ли способ (даже если мне нужен ioctl
) спросить терминал, что это на самом деле ?
¹Для этого вопроса сброс должен очистить экран, сбросить курсор и стереть буфер прокрутки.