Literalmente, ele diz a certas aplicações o número de posições de caracteres às quais a largura do terminal corresponde. Quase todos os terminais usam uma grade regular de linhas e colunas .
LINES
e COLUMNS
eram originalmente (por volta de 1980) variáveis internas em vi
e curses
. Mais tarde, variáveis do shell com esses nomes foram introduzidos. Enquanto eles podem ter sido suportados no SunOS4, a única menção nas páginas de manual é para maldições e ls
:
In order to determine output formats for the -C
, -x
, and -m
options,
/usr/5bin/ls
uses an environment variable, COLUMNS
, to determine the
number of character positions available on one output line. If this
variable is not set, the terminfo database is used to determine the
number of columns, based on the environment variable TERM
. If this
information cannot be obtained, 80 columns are assumed.
Ou seja, o recurso veio do System V e parece ter sido apresentado mais tarde, por exemplo, este commit em 1989 , para a versão BSD de ls
.
O SVr4 curses (e seu sucessor X / Open Curses) documenta o uso das variáveis ambiente LINES
e COLUMNS
, que podem ser usadas para anular os valores da descrição do terminal para o tamanho do terminal, para a função use_env
. A página de manual ncurses documenta esse recurso.
Da mesma forma, sua introdução à programação de shell parece ter vindo do System V, em ksh
. Quando e como SIGWINCH
foi combinado com essas variáveis, é elusivo, provavelmente discutível. No entanto, em shells current em mãos, estas variáveis shell ( não variáveis de ambiente ) são respondidas em SIGWINCH
: ksh93
, bash
. Parece que zsh
o define sem SIGWINCH
(da mesma forma fish
). Verificando o Solaris 10, ksh88
não definiu as variáveis.
O antigo changelog no bash 1.13 (lançado em setembro de 1993) dizia que o recurso SIGWINCH
foi adicionado em março de 1993, enquanto Sven Mascheck implica que o ksh93 foi lançado no final do mesmo ano.
Ter o valor em uma variável shell facilita a exportação (e a alteração para uma variável de ambiente) e modifica o comportamento de determinados programas. Mas a razão para a variável veio de sua utilidade quando os tamanhos de terminal eram difíceis de determinar.