read - Befehl funktioniert in Scripten nicht

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
raa
Beiträge: 411
Registriert: 19.12.2013 10:16:19

read - Befehl funktioniert in Scripten nicht

Beitrag von raa » 28.04.2017 19:05:50

Hallo,

simples Bespiel:

Code: Alles auswählen

#!/bin/bash
 
read -p "Weiter mit beliebiger Taste ..."

echo Weiter
Der Gag: Wenn ich das als User hk oder als Root ausführe, gibt's keine Probleme, aber wenn ich es als User hk mit gksu aufrufe, hält es beim read - Befehl nicht an und wartet auf eine Usereingabe, sondern macht munter weiter. (Das geht mir mit allen read-Befehlen in meinen Scripten so.)

Im Netz habe ich nichts zu dem Fehler gefunden - weiß hier jemand, wo ich suchen muss?
Zuletzt geändert von raa am 01.02.2018 00:06:46, insgesamt 2-mal geändert.

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: read - Befehl funktioniert in Scripten nicht

Beitrag von breakthewall » 28.04.2017 20:06:13

raa hat geschrieben:Im Netz habe ich nichts zu dem Fehler gefunden - weiß hier jemand, wo ich suchen muss?
Du kannst auch nichts dazu finden, weil das kein Fehler ist sondern so beabsichtigt. Wenn Du ein interaktives Shellscript via gksu direkt an die Bash übergibst, und somit an ein anderes Environment, dann wurde das Shellscript komplett via /dev/stdin eingelesen, womit /dev/stdin effektiv belegt ist. Nur das Problem was nun besteht ist, dass read darauf angewiesen ist von /dev/stdin zu lesen, und somit keine Funktion mehr hat. Was mich jedoch dabei mehr wundert ist, warum Du das Shellscript so ausführen willst, zumal read kein grafisches Programm ist.

raa
Beiträge: 411
Registriert: 19.12.2013 10:16:19

Re: read - Befehl funktioniert in Scripten nicht

Beitrag von raa » 28.04.2017 21:16:02

breakthewall hat geschrieben:Du kannst auch nichts dazu finden, weil das kein Fehler ist sondern so beabsichtigt. Wenn Du ein interaktives Shellscript via gksu direkt an die Bash übergibst, und somit an ein anderes Environment, dann wurde das Shellscript komplett via /dev/stdin eingelesen, womit /dev/stdin effektiv belegt ist. Nur das Problem was nun besteht ist, dass read darauf angewiesen ist von /dev/stdin zu lesen, und somit keine Funktion mehr hat.
Ah, klar. :?
breakthewall hat geschrieben:Was mich jedoch dabei mehr wundert ist, warum Du das Shellscript so ausführen willst, zumal read kein grafisches Programm ist.
Naja, das sind nun mal Scripte, die mit Root-Rechten laufen müssen, aber hin und wieder eine Usereingabe verlangen. ("Das und das ist gelaufen, Ergebnis: ... Weiter <beliebige Taste> oder Abbruch <Esc>?" - so etwa.)

Ich hab's jetzt mal mit sudo probiert - und da funktioniert's! Komisch - oder auch nicht? :wink:

raa
Beiträge: 411
Registriert: 19.12.2013 10:16:19

Re: read - Befehl funktioniert in Scripten nicht

Beitrag von raa » 28.04.2017 21:37:01

raa hat geschrieben:
breakthewall hat geschrieben:Du kannst auch nichts dazu finden, weil das kein Fehler ist sondern so beabsichtigt. Wenn Du ein interaktives Shellscript via gksu direkt an die Bash übergibst, und somit an ein anderes Environment, dann wurde das Shellscript komplett via /dev/stdin eingelesen, womit /dev/stdin effektiv belegt ist. Nur das Problem was nun besteht ist, dass read darauf angewiesen ist von /dev/stdin zu lesen, und somit keine Funktion mehr hat.
Ah, klar. :?

Ich hab's jetzt mal mit sudo probiert - und da funktioniert's! Komisch - oder auch nicht? :wink:
Wirklich komisch. :wink: Das mit dem Environment scheint mir nämlich auf den ersten Blick genau andersrum zu sein: Meine Scripte kennen "meine" Umgebungsvariablen nicht, wenn ich sie mit sudo aufrufe, mit gksu schon.

Hab' also mal probiert: "gksu env" liefert mir dieselben Umgebungsvariablen wie "env", "sudo env" nicht. Seltsam.

Antworten