Unterschied zwischen echo $PATH und env | grep $PATH
Hallo! Kann mir jemand erklären, worauf ein unterschiedliche Ergebnis der beiden Befehle beruhen kann? Anders gefragt: Wer verwendet die $PATH Variable, die von einem echo in einer normalen bash ausgegeben wird und wer verwendet env? MfG, Leonhard. PS: Mir geht es dabei insbesondere um dpkg da mein Problem (vgl. E-Mail debconf: apt-extracttemplates failed: Bad file descriptordpkg: dpkg - error: PATH is not set.) noch ungelöst ist.
Re: Unterschied zwischen echo $PATH und env | grep $PATH
Hallo, Mag. Leonhard Landrock wrote: Kann mir jemand erklären, worauf ein unterschiedliche Ergebnis der beiden Befehle beruhen kann? Variablen (bei Dir: PATH) können entweder nur für die aktuelle Shell gelten, oder aber exportiert werden, womit sie auch für Programme gesetzt sind, die über die Shell gestartet werden: [EMAIL PROTECTED]:~ $ FOO=bar [EMAIL PROTECTED]:~ $ echo $FOO bar [EMAIL PROTECTED]:~ $ env | grep FOO [EMAIL PROTECTED]:~ $ export FOO=bar [EMAIL PROTECTED]:~ $ env | grep FOO FOO=bar hth, Wolf -- Büroschimpfwort des Tages: Fallschirmspringer - Kollege, der in ein (eher informelles) Gespräch hineinplatzt, keine Sekunde abwartet und seinen Senf abgibt. (Thomas Schmidt-Hebbel) -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Unterschied zwischen echo $PATH und env | grep $PATH
Moin, * Mag. Leonhard Landrock wrote (2006-06-25 19:27): Kann mir jemand erklären, worauf ein unterschiedliche Ergebnis der beiden Befehle beruhen kann? Ist es denn unterschiedlich? Hast Du mal ein Beispiel? Wer verwendet die $PATH Variable, die von einem echo in einer normalen bash ausgegeben wird und wer verwendet env? Ich würde mich wundern, wenn ein Prozeß den Pfad ermittelt, indem er etwa im Output von env(1) 'rumgrept. Die Frage ist eher, warum $PATH unterhalb von env einen anderen Wert hat. Thorsten The Arcade Fire: Crown Of Love -- He that would make his own liberty secure, must guard even his enemy from oppression; for if he violates this duty, he establishes a precedent which will reach to himself. - Thomas Paine pgpkgYfFPROuy.pgp Description: PGP signature
Re: Unterschied zwischen echo $PATH und env | grep $PATH
Am Sonntag, 25. Juni 2006 19:32 schrieb Wolf Wiegand: Hallo, Mag. Leonhard Landrock wrote: Kann mir jemand erklären, worauf ein unterschiedliche Ergebnis der beiden Befehle beruhen kann? Variablen (bei Dir: PATH) können entweder nur für die aktuelle Shell gelten, oder aber exportiert werden, womit sie auch für Programme gesetzt sind, die über die Shell gestartet werden: [EMAIL PROTECTED]:~ $ FOO=bar [EMAIL PROTECTED]:~ $ echo $FOO bar [EMAIL PROTECTED]:~ $ env | grep FOO [EMAIL PROTECTED]:~ $ export FOO=bar [EMAIL PROTECTED]:~ $ env | grep FOO FOO=bar Danke, damit komme ich der Sache schon viel näher. Heißt das somit, dass env immer nur die Variablen liefert, die auch exportiert worden sind? Völlig offen ist für mich aber auch noch die Frage, wie den nun die normale Einstellung (d.h. nach einer kleinen Installation) für die PATH-Variable unter dem Konto root ist. Seit heute macht mir dpkg Probleme. Tatsächlich lieggt es offensichtlich an dem fehlenden Export der PATH-Variable. Frage: Sollte die PATH-Variable unter dem Konto root normalerweise exporteirt werden? Wenn ja, wo sollte das eingetragen sein? MFG, Leonhard.
Re: Unterschied zwischen echo $PATH und env | grep $PATH
Moin, * Wolf Wiegand wrote (2006-06-25 19:32): Variablen (bei Dir: PATH) können entweder nur für die aktuelle Shell gelten, oder aber exportiert werden, womit sie auch für Programme gesetzt sind, die über die Shell gestartet werden: Guter Gedanke. Da würde ich mal nach PATHs suchen, die geändert, aber nicht exportiert werden. [EMAIL PROTECTED]:~ $ export FOO=bar (Oder auch: 'export foo') Thorsten The Arcade Fire: No Cars Go -- Es gibt Dinge, für die es sich lohnt, eine kompromißlose Haltung einzunehmen. - Dietrich Bonhoeffer pgpORNalX3Pq2.pgp Description: PGP signature
Re: Unterschied zwischen echo $PATH und env | grep $PATH
Moin, * Mag. Leonhard Landrock wrote (2006-06-25 19:48): Heißt das somit, dass env immer nur die Variablen liefert, die auch exportiert worden sind? Plus die, die Du in env selbst änderst. Völlig offen ist für mich aber auch noch die Frage, wie den nun die normale Einstellung (d.h. nach einer kleinen Installation) für die PATH-Variable unter dem Konto root ist. Mit normal meinst Du wie von Debian gewünscht? Frage: Sollte die PATH-Variable unter dem Konto root normalerweise exporteirt werden? Wenn ja, wo sollte das eingetragen sein? Nein, wie alles andere solltest Du einen Export nur machen, wenn Du ihn brauchst. Ansonsten kannst Du den Befehl ja auch mit env starten und nur dort den Pfad ändern. Thorsten The Arcade Fire: Haiti -- Das Briefgeheimnis sowie das Post- und Fernmeldegeheimnis sind unverletzlich. - Grundgesetz, Artikel 10, Abs. 1 pgpPCvYwL0zkh.pgp Description: PGP signature
Re: Unterschied zwischen echo $PATH und env | grep $PATH
Hallo, Mag. Leonhard Landrock wrote: Heißt das somit, dass env immer nur die Variablen liefert, die auch exportiert worden sind? Eigentlich ist env dafür da, Programme zu starten und denen dabei eine andere Umgebung (geänderte Variablen) mitzugeben. Wenn env 'einfach so' gestartet wird, wird ausgegeben, welche Variablen für das zu startende Programm gültig wären (siehe man 1 env). Insofern: Ja, das, was env ausgibt, gilt auch für Programme, die Du in der Shell startest. Völlig offen ist für mich aber auch noch die Frage, wie den nun die normale Einstellung (d.h. nach einer kleinen Installation) für die PATH-Variable unter dem Konto root ist. Hier auf einer neuen Sarge-Installation: PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin Frage: Sollte die PATH-Variable unter dem Konto root normalerweise exporteirt werden? Ja. Wenn ja, wo sollte das eingetragen sein? Ich würde jetzt sagen, /etc/profile (Auszug): if [ `id -u` -eq 0 ]; then PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11 else PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games fi (Und hier komme ich ins Schwimmen, denn das stimmt nicht mit dem Überein, was das 'echo $PATH' weiter oben zurückgegeben hat.) Am besten selbst mal den Abschnitt 'INVOCATION' aus der manpage zu bash lesen. hth, Wolf -- Büroschimpfwort des Tages: Süßigkeitenkistenverwalter - weisen Kollegen darauf hin, dass sie schon zweimal an der Box mit den Süßigkeiten im Labor oder Büro waren. (Jan Topel) -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Unterschied zwischen echo $PATH und env | grep $PATH
Am Sonntag, 25. Juni 2006 20:03 schrieb Wolf Wiegand: Hallo, Mag. Leonhard Landrock wrote: Völlig offen ist für mich aber auch noch die Frage, wie den nun die normale Einstellung (d.h. nach einer kleinen Installation) für die PATH-Variable unter dem Konto root ist. Hier auf einer neuen Sarge-Installation: PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/X11:/usr/local/sbin:/usr/local/ bin Frage: Sollte die PATH-Variable unter dem Konto root normalerweise exporteirt werden? Ja. Wenn ja, wo sollte das eingetragen sein? Ich würde jetzt sagen, /etc/profile (Auszug): if [ `id -u` -eq 0 ]; then PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin /X11 else PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games fi (Und hier komme ich ins Schwimmen, denn das stimmt nicht mit dem Überein, was das 'echo $PATH' weiter oben zurückgegeben hat.) Am besten selbst mal den Abschnitt 'INVOCATION' aus der manpage zu bash lesen. hth, Wolf Auszug aus der bash man-page: When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior. Meine /etc/profile Datei: # /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...). if [ `id -u` -eq 0 ]; then PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11 else PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games fi if [ $PS1 ]; then if [ $BASH ]; then PS1='[EMAIL PROTECTED]:\w\$ ' else if [ `id -u` -eq 0 ]; then PS1='# ' else PS1='$ ' fi fi fi export PATH umask 022 Auszug aus meiner ~/.bash_profile für den Benutzer root: Nein! Das kann ich hier nicht posten. ;-) OK, jetzt weiß ich wo der Hund begraben liegt. Ein fehlgeschlagenes Linux from Scratch experimentieren. Meine ~/.bash_profile ist gelinde gesagt Schrott. :-) Der Tipp Am besten selbst mal den Abschnitt 'INVOCATION' aus der manpage zu bash lesen. war Gold wert. Danke und lG, Leonhard.