Ich war zuvor frustriert über Unterschiede in der Ausgabe des which
Befehls auf verschiedenen Plattformen (Linux vs. Solaris vx. OS X), wobei möglicherweise auch verschiedene Shells eine Rolle spielen. type
wurde als bessere Alternative vorgeschlagen, aber wie tragbar wäre das?
In der Vergangenheit habe ich Funktionen geschrieben, die die Ausgabe analysieren which
und die verschiedenen Anwendungsfälle behandeln, auf die ich gestoßen bin. Sie funktionieren auf allen Computern, die ich verwende, und sind daher für meine persönlichen Skripte in Ordnung, aber dies scheint für Software, die ich irgendwo veröffentlichen werde, für andere schrecklich unzuverlässig.
Um nur ein mögliches Beispiel zu nennen: Angenommen, ich muss anhand eines Skripts erkennen, ob bash und zsh auf einem Computer verfügbar sind, und dann einen Befehl mit zsh ausführen, falls vorhanden, und mit bash, wenn zsh nicht vorhanden ist und bash ausreicht Version, um keinen bestimmten Fehler zu haben. Der größte Teil des restlichen Skripts könnte Bourne-Shell oder Ruby oder irgendetwas anderes sein, aber diese eine bestimmte Sache muss (AFAIK) entweder mit zsh oder einer neueren Version von bash erledigt werden.
Kann ich mich darauf verlassen type
, plattformübergreifend verfügbar zu sein? Gibt es eine andere Alternative, mit which
der die Frage, ob eine bestimmte Software installiert ist, einfach und konsequent beantwortet werden kann?
(Wenn Sie auch Ideen geben möchten, die sich speziell auf das Beispiel beziehen, das ich gegeben habe, ist das großartig, aber ich frage hauptsächlich nach dem allgemeinen Fall: Was ist der zuverlässigste Weg, um herauszufinden, ob eine bestimmte Sache auf einem bestimmten Computer installiert ist ?)
hash
und zu kommentierencommand -v
.command -v
overtype
, alles was wir brauchen ist ein boolesches Ergebnis. Auf welche „häufig empfohlenen Technikenhash
“ beziehen Sie sich?