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.
Antworten
flea

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

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

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
>>>
Antworten