
Eu configurei .bashrc
para mostrar um prompt longo se o terminal tiver pelo menos 80 caracteres de largura. Caso contrário, ele mostrará um prompt menor e degradado.
Eu uso uma if
declaração para conseguir isso:
dp_smaller_than=80
if [ $COLUMNS -lt $dp_smaller_than ]
then
PROMPT_COMMAND="degr_prompt"
else
PROMPT_COMMAND="full_prompt"
fi
Só funciona corretamente se eu colocar um sleep 0
ou outro comando antes desta instrução, caso contrário mostra o seguinte erro:
[: -lt: unary operator expected
Observação:Eu tenho as funções degr_prompt
e full_prompt
definidas no início do arquivo.
Responder1
COLUMNS
variável é definida pelo bash upon receipt of a SIGWINCH.
(veja Shell Variables
a seção em man bash
). Não está definido no seu script porque não é uma variável de ambiente. Veja você mesmo:
$ export COLUMNS=$COLUMNS
$ ./your-script.sh
Agora funciona. Você precisa recuperar o valor de COLUMNS
em seu script. Você pode usar tput
por exemplo:
$ tput cols
186
Responder2
COLUMNS
não está definido de alguma forma em .bashrc
.
Basta obter as colunas tput cols
assim:
dp_smaller_than=80
if [ $(tput cols) -lt $dp_smaller_than ]
then
PROMPT_COMMAND="degr_prompt"
else
PROMPT_COMMAND="full_prompt"
fi