si la declaración en .bashrc no funciona correctamente

si la declaración en .bashrc no funciona correctamente

Lo configuré .bashrcpara mostrar un mensaje largo si el terminal tiene al menos 80 caracteres de ancho. De lo contrario, muestra un aviso más pequeño y degradado.

Utilizo una ifdeclaración para lograr esto:

dp_smaller_than=80
if [ $COLUMNS -lt $dp_smaller_than ]
then
    PROMPT_COMMAND="degr_prompt"
else
    PROMPT_COMMAND="full_prompt"
fi

Solo funciona correctamente si pongo uno sleep 0u otro comando antes de esta declaración; de lo contrario, muestra el siguiente error:

[: -lt: unary operator expected

Nota:Tengo las funciones degr_prompty full_promptdefinidas al principio del archivo.

Respuesta1

COLUMNSLa variable la establece bash upon receipt of a SIGWINCH.(consulte Shell Variablesla sección en man bash). No está configurado en su secuencia de comandos porque no es una variable de entorno. Verse a sí mismo:

$ export COLUMNS=$COLUMNS
$ ./your-script.sh

Ahora funciona. Necesita recuperar el valor de COLUMNSen su script. Puedes utilizar tputpor ejemplo:

$ tput cols
186

Respuesta2

COLUMNSno está configurado de alguna manera en .bashrc.

Simplemente obtenga las columnas de tput colsesta manera:

dp_smaller_than=80
if [ $(tput cols) -lt $dp_smaller_than ]
then
    PROMPT_COMMAND="degr_prompt"
else
    PROMPT_COMMAND="full_prompt"
fi

información relacionada