%ENV enthältnicht alle Umgebungsvariablen

%ENV enthältnicht alle Umgebungsvariablen

am 22.10.2006 12:02:20 von Til Schubbe

Hallo,

wenn ich mir mit

while ( ($k, $v) = each %ENV ) {
print "$k\n";
}

den Inhalt von %ENV ausgeben lasse, erhalte ich 36 Variablen. Gebe ich
in der bash 'echo $' ein und drücke 2 * TAB, erhalte ich aber 72
Variablen. Insbesondere fehlt mir in Perl der HOSTNAME.

Ich habe dann testweise 3 neue Variablen mit 'export ...=...'
hinzugefügt. Alle tauchen dann auch in %ENV auf.

Hier meine Versionen:

$ perl --version
This is perl, v5.8.8 built for i486-linux-gnu-thread-multi

$ bash --version
GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu)

Warum enthält %ENV nicht alle Umgebungsvariablen der bash?

TIA + Gruß
Til

Re: %ENV enthältnicht alle Umgebungsvariablen

am 22.10.2006 12:44:48 von Guido Ostkamp

Til Schubbe wrote:
> Warum enthält %ENV nicht alle Umgebungsvariablen der bash?

Weil es wahrscheinlich keine Umgebungs (=Environment) Variablen sind,
sondern lokale. Erst duch das 'export' Statement werden sie ins
Environment übernommen.

Versuch doch einfach mal 'export VARIABLENNAME' auf die, die Du noch
zusätzlich brauchst. Danach müßte auch Perl sie anzeigen können.

Gruß,

Guido

Re: %ENV enthält nicht alle Umgebungsvariablen

am 23.10.2006 09:31:11 von Ferry Bolhar

Til:

> $ bash --version
> GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu)
>
> Warum enthält %ENV nicht alle Umgebungsvariablen der bash?

BASH_VERSION (ich nehme an, diese Variable meinst du), ist
_keine_ Umgebungsvariable, sondern eine ganz normale Shell-
Variable, die die Bash beim Starten setzt (und die du, wenn du
Lust hast, auch jederzeit ändern kannst).

Wenn du ein

export BASH_VERSION

machst, wird du sie auch in %ENV wiederfinden.

LG, Ferry

--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at