[Python-de] Testen, ob Variabel existiert

Marcus Habermehl bmh1980de at yahoo.de
Sam Sep 4 13:35:11 CEST 2004


Hallo.

Am Sam, den 04.09.2004 um 12:43 Uhr +0200 schrieb Hartmut Goebel:
> Marcus Habermehl wrote:
> 
> > Warum ist das blauäugig? Unter Linux (besser gesagt hier Slackware) gibt
> > es nur
> > 
> > pfad1=/usr/bin
> > pfad2=/usr/local/bin
> > pfad3=/usr/X11R6/bin
> > pfad4=/opt/kde/bin,
> > 
> > wo die Programme liegen könnten.
> 
> Und genau das ist blauäugig! Darum:
> 
> * In obiger Liste fehlen schon man /sbin, /usr/sbin, /usr/local/sbin.

Des es sich bei den gesuchten Programme handelt, dürften die sbin
Verzeichnisse keine Rolle spielen. Habe es zumindest noch nicht erlebt,
dass ein WM in [/usr|/usr/local]/sbin installiert war.

> * Damit läuft das Programm nur auf dieser Version diese OS in der
>    Konfiguration. Was machst Du, wenn der Anwender eine der Anwendungen
>    in seinem Home installiert hat?

Ich weiß zwar, dass man etwas nach ${HOME}/bin installieren/kopieren und
ausführen kann. Aber da ich bisher von vielen Seiten gehört habe, dass
man das aus Sicherheitsgründen nicht machen soll, habe ich diesen Pfad
immer ignoriert und notfalls gelöscht.

> * Unter Unix wird der Suchpfad in $PATH festgelegt. Jedes Programm
>    sollte dann auch diese Variable auswerten. Mein PATH sieht
>    beispielsweise so aus:
> 
>    [hartmut at goebel02 hartmut]$ echo $PATH
> /bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin/:/usr/games:/home/hartmut/bin
> 
> Regel: Nichts hardcoden, bei dem die Wahrscheinlichkeit groß ist, dass 
> es sich ändert.

Ich habe mir ja schön öffter mal überlegt, ${PATH} in meine Skripte
einzulesen. Bisher war ${PATH} allerdings noch nicht wichtig.

Es wäre wohl am besten, wenn ich die Variabel paths aus deinem Beispiel
so benutze, oder?

paths = os.getenv('PATH').split(':')

Somit dürgen Änderungen am Code nicht nötig sein, da es ja, wie es
richtig sein sollte, über ${PATH} gesteuert wird, aus welchen
Verzeichnissen ein User etwas ausführen darf.

Gruß

Marcus