[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bash-environment und lists und compound commands in bash: { list; }


Hallo zusammen,

welche Rolle spielt das Environment der Bash fuer deren Parser?

man kennt folgendes Verhalten:
$ { echo foo; echo bar; }
foo
bar

... vor Urzeiten wurde das ";" nach "bar" in die Syntax aufgenommen,
d.h. weglassen fuehrt zu einem Syntaxfehler. Soweit bekannt.

Wie sieht es aus bei "env -i"?

$ env -i { echo foo; echo bar; }
bash: syntax error near unexpected token `}'

$ env -i { echo foo; echo bar }
env: {: No such file or directory
bar }



     -i      Execute the utility with only those environment variables speci-
             fied by name=value options.  The environment inherited by env is
             ignored completely.

Weder die aktuelle noch die alte Syntax scheinen hier zu funktionieren.
Auch nicht 

$ env -i "{ echo foo; echo bar; }"  
env: { echo foo; echo bar; }: No such file or directory
$ env -i "{ echo foo; echo bar }"
env: { echo foo; echo bar }: No such file or directory

... was nur der Vollstaendikeit halber hier erwaehnt werden soll.

Selbst wenn ich annehme, dass "env -i" alles mit /bin/sh aufruft (bei
FreeBSD !bash), geht das (interaktiv) trotzdem:

$ { echo foo; echo bar; }
foo
bar

... wobei die Fehlermeldung nach env -i eindeutig von bash stammt.

Hintergrund: ich verwende "env -i", um die Fehlerquelle "mein script laeuft
nicht als cronjob aber auf der shell" auszuschliessen. Dabei ist mir das
erst aufgefallen.

Welche (fehlende?) Shellvariable steckt dahinter?

Gruss
Raphael

-- 
Raphael Becker          <rabe@xxxxxxxxx>          http://rabe.uugrn.org/
GnuPG:                E7B2 1D66 3AF2 EDC7 9828  6D7A 9CDA 3E7B 10CA 9F2D
.........|.........|.........|.........|.........|.........|.........|..



--
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: http://wiki.uugrn.org/wiki/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/