"weston-launch &" geht in Shell, aber nicht in Skript

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

"weston-launch &" geht in Shell, aber nicht in Skript

Beitrag von MartinV » 12.07.2019 12:43:58

Ich habe ein verwirrendes Problem.
bash verhält sich direkt auf Konsole anders als wenn ich den gleichen Befehl im Skript ausführe.

Direkt eingetippt und ausgeführt geht es:

Code: Alles auswählen

$ weston-launch &
Aber der gleiche Befehl in einem Skript geht nicht:

Code: Alles auswählen

$ echo "weston-launch &" >test.sh
$ bash test.sh
weston-launch: weston-launch must be run from a virtual terminal
Hat jemand eine Idee, woran das liegt? Ohne "&" geht es interessanterweise im Skript.
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: "weston-launch &" geht in Shell, aber nicht in Skript

Beitrag von MartinV » 13.07.2019 14:15:01

Ich habe herausgefunden, daß ich den Fehler auch mit dem Befehl "tty" reproduzieren kann, auch in einem X Terminal.

Geht: Geht:

Code: Alles auswählen

tty &
Geht:

Code: Alles auswählen

echo tty >test.sh
bash test.sh
Geht:

Code: Alles auswählen

echo tty >test.sh
bash test.sh &
Geht nicht:

Code: Alles auswählen

echo "tty &" >test.sh
bash test.sh
Geht nicht:

Code: Alles auswählen

echo "tty & <&0" >test.sh
bash test.sh
Hat irgendwer eine Idee? Umgebungsvariablen habe ich überprüft, aber nichts nennenswertes gefunden.
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: "weston-launch &" geht in Shell, aber nicht in Skript

Beitrag von MartinV » 15.07.2019 19:23:10

Ich möchte die Frage noch einmal nach oben holen.

Hat denn irgend jemand eine Idee? Zumindest einen Ansatz?
ich weiß nicht einmal, wonach ich suchen soll.

Ich kann das Problem auch nachstellen mit.

Code: Alles auswählen

$ tty
/dev/pts/0

$ tty &
/dev/pts/0

$ (tty)
/dev/pts/0

$ (tty) &
/dev/pts/0

$ (tty &)
kein Terminal
 
Irgendwie scheint die Information, ob/wo sich die Shell befindet, auf Skriptebene/Subshellebene im Hintergrundprozeß verlorenzugehen.
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

Antworten