Jakob Schürz wrote:
> Beim Start von Fvwm erhalte ich in .xsession-errors mehrfach folgende
> Meldung:
>
> tput: No value for $TERM and no -T specified
>
> Ich habe herausgefunden, dass tput mit einer Terminal-Initialisierung zu
> tun hat. Nur hab ich keine Ahnung, welcher Aufruf in meiner fvwm-config
> bzw. bashrc dies auslösen könnte...
>
> Hat jemand Ideen?
RTFM, STFW.
tput(1) aus dem Paket ncurses(-bin) hat insofern mit Terminal-
Initialisierung zu tun, als dass man damit ANSI-Escape-Sequenzen [1]
generieren kann, die zum jeweiligen Terminal passen.
Zum Beispiel kann man mit
tput bold
die ANSI-Escape-Sequenz ausgeben, damit bei passendem Terminal nachfolgender
Text „fett“ erscheint (in Anführungszeichen, weil die tatsächliche
Darstellung terminalspezifisch ist – kann auch unterstrichen oder farbig
sein). Hier (TERM=xterm bzw. TERM=screen) ist das
$ tput bold | od -tax1
0000000 esc [ 1 m
1b 5b 31 6d
0000004
In meinen Scripts verwende ich daher u. a.
bold=$(tput bold 2>/dev/null)
norm=$(tput sgr0 2>/dev/null)
printf '%s' "um gezielt ${bold}Fettschrift${norm} zu generieren"
Welches Terminal man benutzt, d. h. welche ANSI-Escapes bei dem jeweiligen
Terminal für eine brauchbare Ausgabe verwendet werden müssen, wird durch die
Umgebungsvariable „TERM“ angegeben, oder kann bei „tput“ mit der Option „-T“
angegeben werden. Aus der terminfo-Datenbank (${HOME}/.terminfo,
/etc/terminfo, /lib/terminfo oder /usr/share/terminfo; in dieser
Reihenfolge) wird dann die zum Terminal passende Escape-Sequenz ausgelesen.
Obige Codesequenz findet sich hier beispielsweise in
/usr/share/terminfo/l/linux-vt bei Adresse 00000400h, wie hexedit(1) zeigt.
Dein Debian(?) GNU/Linux bzw. Deine Terminal-Applikation ist nicht richtig
konfiguriert, wenn "$TERM" bei Dir die Länge 0 hat. Zu den üblichen Werten
gehören „linux“, „screen“ und „xterm“. Du solltest das Paket terminfo
(siehe dann auch terminfo(5)) installiert haben.
Der Aufruf, der die Fehlermeldung verursacht, ist einer von „tput“ selbst
(sieht man am Präfix). Es wird also wahrscheinlich in einem Skript
aufgerufen, welches beim Start von fvwm aufgerufen wird. Dieses sollte in
der fvwm-Manpage dokumentiert sein. Zur Not könntest Du eine Textsuche mit
ack(1) oder GNU grep(1) in den jeweiligen Verzeichnissen machen, angefangen
mit Deinem Home-Verzeichnis.
Das herauszufinden oder dort Änderungen vorzunehmen (ich rate von Letzterem
ab) löst aber das Problem nicht, denn am Aufruf von „tput“ ist nichts
Fchsales – der Variablenwert muss stattdessen repariert werden.
_______
[1] <
http://de.wikipedia.org/wiki/Escape-Sequenz>
--
PointedEars
Twitter: @PointedEars2
Please do not Cc: me. / Bitte keine Kopien per E-Mail.