Ich habe ein kleines GUI mit yad geschrieben – funktioniert problemlos,
aber gtk wirft jedesmal eine Warnung aus, wenn yad gestartet wird und
zerfetzt die Skriptausgabe im Terminal:
gtk_box_gadget_distribute: assertion 'size >= 0' failed in
GtkScrollbar
stderr von yad auf eine Datei umleiten bringt leider nichts – die
Meldung kommt nicht von yad, sondern von gtk.
Wie kann man diesen Unsinn abstellen?
buntkuh schrieb:> std. error umleiten ~ $yad-skript 2>/dev/null
OK, das tut es… Da wird es wohl das Einfachste sein, entweder ein
Wrapper-Skript darum zu bauen, oder das Skript sich selbst mit dem
Redirect aufrufen zu lassen.
yad zu compilieren, ist mir nicht gelungen – das scheitert auf Mint 19
schon beim configure daran, dass es keine passende gtk-Version findet.
Wie sich das beheben lässt, habe ich leider nicht herausgefunden.
Taucher schrieb:> yad zu compilieren, ist mir nicht gelungen –
Wenn das mit der error Umleitung funktioniert, brauchst Du das ja auch
nicht mehr.
Taucher schrieb:> Wie sich das beheben lässt, habe ich leider nicht herausgefunden
Vermutlich fehlen die sources für yad bzw. gtk.
Taucher schrieb:> buntkuh schrieb:>> std. error umleiten ~ $yad-skript 2>/dev/null>> OK, das tut es… Da wird es wohl das Einfachste sein, entweder ein> Wrapper-Skript darum zu bauen, oder das Skript sich selbst mit dem> Redirect aufrufen zu lassen.>
oder im skript, probiere mal so
#!/bin/bash
...
exec 2>/dev/null
yad --text ...
---
man bash:
Note that the exec builtin command can make redirections take effect in
the current shell.
buntkuh schrieb:> exec 2>/dev/null
Das funktioniert – vielen Dank für den Tipp.
Ich hatte den Ehrgeiz, diese Skripte rein mit den Möglichkeiten der bash
zu schreiben. Das war keine gute Idee: das Zeug ist schier unlesbar,
weil die Syntax ziemlich unstrukturiert ist. Pearl ist schon kein
Vergnügen, aber die bash toppt das noch um mindestens eine
Größenordnung…
Auf die Idee mit dem exec muss man erst mal kommen – wie bekommt man das
hin, ohne sich tief in die bash-Quellen einzugraben?
Taucher schrieb:> wie bekommt man das> hin, ohne sich tief in die bash-Quellen einzugraben?
man bash
Bis Abschnitt REDIRECTION runter scrollen (oder suchen).
Dort gibt es eine "Randnotiz":
Note that the exec builtin command can make redirections take effect in
the current shell.
Dann nach "exec " suchen (einschließlich Blank). Dort ist es dann
beschrieben.
Hab es aber selber nicht gewusst; auch von mir: danke für den Tipp!
Ach ja, nochwas, Warnhinweis auf der ubuntuusers Seite gefunden:
https://wiki.ubuntuusers.de/yad/#Stoerende-Warnmeldung
Gerhard Z. schrieb:> Note that the exec builtin command can make redirections take effect in> the current shell.>> Dann nach "exec " suchen (einschließlich Blank). Dort ist es dann> beschrieben.> Hab es aber selber nicht gewusst;
Kann es sein, dass du mich für ein bisschen doof hälst?
> Ach ja, nochwas, Warnhinweis auf der ubuntuusers Seite gefunden:> https://wiki.ubuntuusers.de/yad/#Stoerende-Warnmeldung
Das habe ich ausprobiert – funktioniert nicht, wenn man die
Parameterliste für yad dynamisch aufbaut. Als String klappt das nicht,
nur wenn man die Parameter in einem Array zusammenbaut und anschließend
mit $(array[@]) ausführt, warum? Keine Ahnung, das sind das die
Mysterien der Bash…
Taucher schrieb:> Kann es sein, dass du mich für ein bisschen doof hälst?
Macht es den Eindruck, war nicht gewollt. Aber stell dir jemanden vor,
der den Thread hilfreich findet, aber das erste Mal die man-pages
aufruft. Der hat sicher Schwierigkeiten, in der überaus langen man-page
die entsprechenden Infos zu finden.