
Ich habe es so eingerichtet, .bashrc
dass eine lange Eingabeaufforderung angezeigt wird, wenn das Terminal mindestens 80 Zeichen breit ist. Andernfalls wird eine eingeschränkte, kleinere Eingabeaufforderung angezeigt.
Um dies zu erreichen , verwende ich eine if
Anweisung:
dp_smaller_than=80
if [ $COLUMNS -lt $dp_smaller_than ]
then
PROMPT_COMMAND="degr_prompt"
else
PROMPT_COMMAND="full_prompt"
fi
Es funktioniert nur richtig, wenn ich sleep 0
vor dieser Anweisung einen oder einen anderen Befehl setze, andernfalls wird der folgende Fehler angezeigt:
[: -lt: unary operator expected
Notiz:Ich habe die degr_prompt
und full_prompt
Funktionen am Anfang der Datei definiert.
Antwort1
COLUMNS
Die Variable wird von Bash gesetzt upon receipt of a SIGWINCH.
(siehe Shell Variables
Abschnitt in man bash
). Sie wird in Ihrem Skript nicht gesetzt, da es sich nicht um eine Umgebungsvariable handelt. Sehen Sie selbst:
$ export COLUMNS=$COLUMNS
$ ./your-script.sh
COLUMNS
Jetzt funktioniert es. Sie müssen den Wert in Ihrem Skript abrufen . Sie können tput
beispielsweise Folgendes verwenden:
$ tput cols
186
Antwort2
COLUMNS
ist irgendwie nicht in gesetzt .bashrc
.
Rufen Sie die Spalten einfach tput cols
wie folgt ab:
dp_smaller_than=80
if [ $(tput cols) -lt $dp_smaller_than ]
then
PROMPT_COMMAND="degr_prompt"
else
PROMPT_COMMAND="full_prompt"
fi