И не говорите « $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) спросить терминал, что это на самом деле ?
¹Для этого вопроса сброс должен очистить экран, сбросить курсор и стереть буфер прокрутки.
