Хотя верно, что вы всегда должны устанавливать переменную окружения TERM
в соответствии с типом вашего терминала, а не беспечно и ошибочно предполагать, что тип вашего терминала — xterm-*
, на самом деле это не имеет ничего общего с проблемой, поскольку переменная окружения TERM
не имеет отношения к литеральным управляющим последовательностям, встроенным в ваше приглашение.
Проблема заключается в том, что вы используете под-параметры в своей управляющей последовательности, а не параметры. Параметры разделяются точкой с запятой -двоеточием ;
, как указано в ECMA -48 :1991 § 5.4.2. Параметры Sub -разделяются двоеточием :
, как указано в ITU -T T.416 :1993 § 13.1.8.
Ваш внешний эмулятор терминала, по-видимому, является одним из тех, которые обрабатывают подпараметры -с боджем, который рассматривает их как параметры. Таким образом,CSI
0
:
3
3
m
обрабатывается как SGR 0 и SGR 33. Другие эмуляторы терминала более строго относятся к правильной обработке управляющих последовательностей или еще не реализуют поддержку параметра sub -. Они могут по-разному рассматривать его как SGR 0 с дополнительным параметром -равным 33, простым SGR 0 (, принимающим первое число ),или только SGR 33 (с последним номером ).
Эмуляторы терминала вообще не поддерживали параметры sub -несколько лет назад, так что это то, что меняется; и следует надеяться, что со временем все они будут должным образом поддерживать параметры sub -. В этом случае ваша подсказка будет просто повсеместно неправильной. & #9786;
Лично я предпочитаю оболочку Z, где можно использовать последовательности, подобные %F{yellow}
, в подсказке, не беспокоясь о том, что представляют собой управляющие последовательности, правильно их интерпретировать и помечать как интервалы -.
Вы можете увидеть список свойств с systemctl show
, например
systemctl show user-1000.slice