Hallo,
ich suche eine Binary unter Linux, mit welcher ich eine Variable für die Terminal-Session setzen kann, ohne das meine Eingabe angezeigt wird. Zum Beispiel um $PASS zu setzen. Soll ja nicht jeder sehen. ;)
Ich google mich schon die ganze Zeit tot und such mich dumm und dusselig, kann mir jemand auf die Sprünge helfen??
LG
Variable im Terminal setzen ohne Ausgabe
-
- Posts: 14
- Joined: 2007-03-22 12:34
- Location: Nähe Chemnitz
-
- Posts: 17
- Joined: 2008-03-18 19:28
Re: Variable im Terminal setzen ohne Ausgabe
flo@Marin - ~ (master)
[18:07:59] > stty -echo && read foo && stty echo
flo@Marin - ~ (master)
[18:08:14] > echo $foo
hiddeninput
[18:07:59] > stty -echo && read foo && stty echo
flo@Marin - ~ (master)
[18:08:14] > echo $foo
hiddeninput
-
- Administrator
- Posts: 2641
- Joined: 2004-01-21 17:44
Re: Variable im Terminal setzen ohne Ausgabe
Böse Lösung, Du weißt ja nicht, welchen Status stty vorher hatte - also explizit wieder auf echo setzen ist keine gute Idee. Hier ist eine etwas umfassendere Lösung beschrieben, die auch im Falle eines Abbruchs stty auf den Originalwert zurücksetzt: http://code.techinterviews.com/read-pas ... x-shell/11
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time
-
- Posts: 14
- Joined: 2007-03-22 12:34
- Location: Nähe Chemnitz
Re: Variable im Terminal setzen ohne Ausgabe
Ha, danke jfreund. Über deinen Link war noch ein anderer Blog gelinkt. Dort stands.
read -s hab ich gesucht. :-)
read -s hab ich gesucht. :-)
-
- Administrator
- Posts: 2641
- Joined: 2004-01-21 17:44
Re: Variable im Terminal setzen ohne Ausgabe
Aber bitte beachten: read ist ein sog. "builtin command"; d. h. es ist kein separates Binary, sondern wird von der jeweils verwendeten Shell implementiert. Der POSIX-Standard garantiert zwar das Vorhandensein des read-Kommandos in jeder POSIX-konformen Shell, nicht jedoch die Verfügbarkeit der -s Option. So implementieren Bash und ZSH diese Option, wohingegen die Debian Almquist Shell (dash), FreeBSD's sh (ein Almquist Shell Ableger) und viele weitere Bourne-Shell Clones diese Option nicht implementieren.
Im Zuge sauberer Shellskript-Programmierung muss also zwingend Bash oder ZSH im Shebang angewählt werden, da z. B. bei Ubuntu und Debian Lenny (hoffe, die Ankündigung stimmt noch...) unter /bin/sh die Debian Almquist Shell (dash) gelinkt ist, die eben read -s nicht versteht.
Im Zuge sauberer Shellskript-Programmierung muss also zwingend Bash oder ZSH im Shebang angewählt werden, da z. B. bei Ubuntu und Debian Lenny (hoffe, die Ankündigung stimmt noch...) unter /bin/sh die Debian Almquist Shell (dash) gelinkt ist, die eben read -s nicht versteht.
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time