Zwei mal source .bash_profile; alle Pfade doppelt

mahed

Aktives Mitglied
Thread Starter
Dabei seit
26.03.2006
Beiträge
411
Reaktionspunkte
1
Liebes Forum
Ist es normal, dass wenn man die .bash_profile zwei mal sourced, dass nacher $PATH quasi doppelt so lang ist? Also alle Pfade zwei mal in $PATH enthalten sind?

Wie kann das sein?

Meine Path Syntax sieht so aus:
Code:
export PATH=/bin
export PATH=$PATH:/usr/bin
export PATH=$PATH:/usr/sbin
export PATH=$PATH:/sbin
export PATH=$PATH:/usr/local/bin
export PATH=$PATH:/usr/texbin
export PATH=$PATH:/usr/X11/b5/bin

Danke für Hinweise.
 
Normal würde ich das von oben so machen: export PATH=/bin:/usr/bin:/usr/sbin:...:$PATH
(Ob $PATH vorne oder hinten steht, ist nahezu egal)

Wenn Du das :$PATH am Ende weglässt, kannst Du mehrfach sourcen, ohne "Pfadverdopplung".

Das $PATH dranhängen kommt eigentlich daher, weil man aus /etc/profile etc. evtl. auch schon was mitkriegt.
In Deinem Fall aber hinfällig, weil Du in der ersten Zeile schon kein $PATH hast. Du setzt den PATH komplett neu.
Und dabei fällt mir auf, dass es ja bei Dir beim 2fach sourcen nicht doppelt sein sollte.

Was steht denn sonst in der .bash_profile?
 
Zuletzt bearbeitet:
Das "normale" Verhalten ist in den manpages beschrieben:
Code:
man bash | less +4/INVOCATION
Der Rest ist einfach nur Shell Syntax.

Wie kommt es denn, dass "... man die .bash_profile zwei mal sourced".
 
Ich schreibe die Elemente untereinander damit es besser lesbar ist.

@ Leute: Ich habe jetzt alle export statements entfernt und schreibe das jetzt so:
Code:
PATH=/bin
PATH=$PATH:/usr/bin
PATH=$PATH:/usr/sbin
PATH=$PATH:/sbin
PATH=$PATH:/usr/local/bin
PATH=$PATH:/usr/texbin
PATH=$PATH:/usr/X11/bin
PATH=$PATH:/usr/local/git/bin
PATH=$PATH:/src/tools
PATH=$PATH:/scitools/bin
PATH=$PATH:/Library/Frameworks/Python.framework/Versions/2.6/bin
PATH="/Library/Frameworks/Python.framework/Versions/2.6/bin:${PATH}"
export PATH
Da stehen ein paar statements mehr drin, aber ich glaube das Wesentliche ist, dass nur noch einmal export steht. Ich source das nicht per se zweimal, ich hab es einfach ausprobiert und dabei ist mir das aufgefallen, dass der Path immer länger wird.
 
Und warum schreibst Du nicht einfach
export PATH=PATH=/bin:/usr/bin:/sbin:/usr/sbin [...]
?

Ich versteh auch nicht, warum ausgerechnet "/Library/Frameworks/Python.framework/Versions/2.6/bin" immer als erstes durchsucht werden soll.
Ich geh´ mal davon aus, Du hast Deine Gründe ;).
 
Ich schreibe das, weil ich finde es besser lesbar, als wenn alles auf einer Zeile steht.
Ich versteh auch nicht, warum ausgerechnet "/Library/Frameworks/Python.framework/Versions/2.6/bin" immer als erstes durchsucht werden soll.
Ich glaube das hat Django selber so eingerichtet.
 
Ich mach etwas ähnliches in meiner (Standard-) zshrc, aber aus anderen Gründen:
Code:
PATH="/bin:/sbin:/usr/bin:/usr/sbin"
[[ -d /usr/local/zsh/bin ]]     && PATH="$PATH:/usr/local/zsh/bin"
[[ -d /usr/local/bin ]]     && PATH="$PATH:/usr/local/bin"
[[ -d /usr/local/sbin ]]    && PATH="$PATH:/usr/local/sbin"
[[ -d /usr/local/scripts ]]   && PATH="$PATH:/usr/local/scripts"
[[ -d /opt/local/bin ]]       && PATH="$PATH:/opt/local/bin"
[[ -d /opt/local/sbin ]]      && PATH="$PATH:/opt/local/sbin"
[[ -d /usr/local/mysql/bin/ ]]  && PATH="$PATH:/usr/local/mysql/bin/"
[[ -d /usr/X11R6/bin ]]     && PATH="$PATH:/usr/X11R6/bin"

Die zshrc verwende ich auf einer ganzen Reihe von Rechner.
Es gibt eine Standard PATH-Variable.
Die übrigen Verzeichnis werden nur angehängt, wenn sie auf dem betreffenden Rechner vorhanden sind.
 
Zurück
Oben Unten