Was ist tput?

11/05/2013 - 17:37 von Jakob Schürz | Report spam
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?


lg jakob
"Die Zuweisung erfolgt mit hoher Prioritàt und schlàft nicht. Dies ist
die Flagge, um Einsatz in Interrupt-Handler, unten Hàlften und andere
Situationen, in denen Sie kann nicht schlafen."
(aus http://de.how-to.mobi/index.php?id6343)
http://xundeenergie.wordpress.com
wertstoffe@nurfuerspam.de
 

Lesen sie die antworten

#1 Thomas PointedEars Lahn
12/05/2013 - 11:17 | Warnen spam
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.

Ähnliche fragen