Что даёт %I 38400 для переменной окружения TERM?
Искал, как настроить автологин на нужный TTY. Нашёл. Там используется /sbin/agetty через сервис systemd. Так вот, там такая запись:
ExecStart=-/sbin/agetty --autologin username --noclear %I 38400 linux
В общем, то что жирным выделено уходит в переменную окружения TERM. Нужно только понять, что это даёт. Гуглинг что-то не помог мне.
Я вообще ни разу ниигде не находил, чтобы было описание того, что и как должно быть записано в стандартные переменные окружения. Типа man TERM, может есть какие-то ресурсы, где можно посмотреть?
Ответы (1 шт):
ExecStart=-/sbin/agetty --autologin username --noclear %I 38400 linux
см. man agetty:
- %I — это параметр, который
systemdдолжен заменить на имя конкретногоttyустройства для которого запускаетсяagetty, обычно этоtty[0-6]. Но можно запустить логин и, например, на последовательном порте (ttyS0, илиttyUSB0). - 38400 — это «скорость» терминала в бодах, для виртуальных терминалов
/dev/tty*это не имеет ни какого практического значения. Для «настоящего» терминала на последовательном интерфейсе это установит скорость последовательного порта. - linux — это тип терминала, просто значение, в которое устанавливается переменная
TERM.
Собственно само значение TERM, как говорит POSIX используется «некоторыми программами» чтобы определить, какие дополнительные возможности терминала они могут задействовать. Вообще говоря, сам формат этого значения и его интерпретация остаются полностью на совести конкретных программ.
На практике, обычно, значение TERM — это имя терминала из базы terminfo, а конкретно имя файла в /usr/share/terminfo/*/*. В нём в частности определяется, например, доступны ли на терминале цвета, сколько цветов, как именно вывести текст в определённом месте экрана и т.п. Обычно эти данные используют программы с псевдографическим интерфейсом, в частности, основанные на (n)curses.
В общем TERM — это одна из тех доисторических вещей, доставшихся в наследство с тех времён, когда компьютеры были большими, а «терминал» представлял из себя отдельное устройство, подключаемое через последовательный интерфейс. Выносить такие операции, как «вывести строчку в позицию (X,Y) экрана» на уровень драйвера не имело смысла, а каждый терминал реализовывал эту операцию по-своему, с помощью специальных управляющих команд, передаваемых в общем потоке данных. Сегодня, если не делаешь что-то необычное, например, подключаешь внешний терминал из 70—80-х годов XX века через последовательный порт, то это значение не должно представлять интереса.