Ist 'foo' in PATH?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
flea

Ist 'foo' in PATH?

Beitragvon flea » Freitag 20. Juni 2003, 15:45

Hi,

ich suche nach einem eleganten Weg (auf einem Linuxsystem) herauszufinden, ob es ein Programm (foo) auf meinem System gibt.
Für die bash würde ich wahrscheinlich so etwas schreiben:

if [ -x "$(which foo)" ]; then echo "jawollja"; else echo 'nepp'; fi

Kennt jemand eine elegantere Variante als (systemabhängig) den Output von os.system('which foo') zu parsen?

Ich hatte gehofft, in os etwas passendes zu finden...

Schönen Gruß!
Gast

Re: Ist 'foo' in PATH?

Beitragvon Gast » Freitag 20. Juni 2003, 16:19

flea hat geschrieben:ich suche nach einem eleganten Weg (auf einem Linuxsystem) herauszufinden, ob es ein Programm (foo) auf meinem System gibt.


Ich antworte mir mal selbst.
Ich habe zwar immer noch nichts gefunden, aber folgende Funktion funktioniert ganz gut (relativ systemunabhängig):

>>> def inPath(cmd):
... if not cmd: return None
... env_path = os.getenv('PATH') or os.defpath
... for i in string.split(env_path, os.pathsep):
... path = i + os.sep + cmd
... if os.access(path, os.X_OK):
... return path
... return None
...
>>> print inPath('ls')
/bin/ls
>>> print inPath('lss')
None
>>>

Ciao!
Gast

Beitragvon Gast » Freitag 20. Juni 2003, 16:23

Django schießt aus dem Knie, hier die Version ordentlich eingerückt:

Code: Alles auswählen

>>> def inPath(cmd):
...         if not cmd: return None
...         env_path = os.getenv('PATH') or os.defpath
...         for i in string.split(env_path, os.pathsep):
...                 path = i + os.sep + cmd
...                 if os.access(path, os.X_OK):
...                         return path
...         return None
...
>>> print inPath('ls')
/bin/ls
>>> print inPath('lss')
None
>>>

Wer ist online?

Mitglieder in diesem Forum: Torsten_K