Erhalten Sie den vollständigen Pfad des Skripts in der Umgebungsvariablen PATH

4

Ich habe mich gefragt, ob es in Bash einen integrierten Befehl (oder sogar einen OSX-spezifischen Befehl) gibt, der den vollständig aufgelösten Pfad eines Skripts in der aktuellen PATHUmgebungsvariablen anzeigt .

Zum Beispiel PATHsieht mein aktuell so aus:

>: echo $PATH | tr ":" "\n"
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/opt/X11/bin
/Users/Josh/Dropbox/Scripts/Bash
/Users/Josh/Dropbox/Tools/WinRAR/OSX

Und es gibt ein Skript in Dropbox namens get-azurelogs.sh. Dieser Pfad ist der Einfachheit PATHhalber in meiner Variablen enthalten, aber wenn ich den vollständigen Pfad zu diesem Skript anzeigen möchte, gibt es eine einfache einzeilige Möglichkeit, den vollständig aufgelösten Pfad anzuzeigen, anstatt ihn zu testen, vorausgesetzt, ich war mir nicht sicher, wo er sich befand in jedem der oben genannten Verzeichnisse?

Josh
quelle

Antworten:

6

Sie können verwenden which. Von der Manpage:

Das Dienstprogramm which verwendet eine Liste von Befehlsnamen und durchsucht den Pfad nach jeder ausführbaren Datei, die ausgeführt werden würde, wenn diese Befehle tatsächlich aufgerufen worden wären

Matt G
quelle
Boom. Ich wusste, dass es etwas geben musste. Akzeptiert die Antwort, sobald die obligatorische Wartezeit abgelaufen ist. Vielen Dank!
Josh
whoops, hab deine antwort anfangs nicht gesehen. Prost!
njboot
4

Eine gute Alternative whichist das eingebaute type. Der Vorteil ist, dass typeauch Bash-Aliase und -Funktionen verarbeitet werden können.

Asmus
quelle
Es gibt auch etwas, type -Pdas sich auf ausführbare Dateien auf der Festplatte beschränkt - es werden keine Aliase angezeigt.
Rich Homolka
2
which -a [nameofexecutable]

IE:

Macbook-Pro:~ njboot$ which -a chmod 
/bin/chmod
Macbook-Pro:~ njboot$ which -a nusers
/Users/njboot/bin/nusers
njboot
quelle