Wiem, że kiedy jesteś w powłoce, jedynymi poleceniami, których możesz użyć, są te, które można znaleźć w jakimś katalogu ustawionym na PATH. Nawet ja nie wiem, jak sprawdzić, jakie katalogi znajdują się w mojej zmiennej PATH (i to jest kolejne dobre pytanie, na które można odpowiedzieć), chciałbym wiedzieć:
Przychodzę do łuski i piszę:
$ lshw
Chcę poznać polecenie w powłoce, które może mi powiedzieć, GDZIE znajduje się to polecenie. Innymi słowy, gdzie znajduje się ten „plik wykonywalny”?
Coś jak:
$ location lshw
/usr/bin
Ktoś?
źródło
locate
, możesz znaleźć pliki. Korzysta z bazy danych, która jest obsługiwana przezupdatedb
zadanie cron. Ponieważlocate
przeszukuje bazę danych, a nie cały system plików, jest to znacznie szybsze niżfind
(co może być użyte w ostateczności).type -a
może to być mylące. np. w przypadkunvm
której jest funkcja bash, którą musiałem zrobić:type -a nvm | head -n1
dowiedzieć się, co to dokładnie jestnvm
.type -a
wyprowadza definicję funkcji oraz typ pliku wykonywalnego. Ryzyko związane z użyciemhead
polega na tym, że w przypadku nazw z więcej niż jednym typem dodatkowe typy nie zostaną wyprowadzone. Możesz chcieć spojrzećtype -t
.Lubię to:
Aby zobaczyć wszystkie polecenia pasujące do ścieżki:
źródło
which
jest problematyczne, ponieważ istnieje wiele implementacji, z których wiele działa całkowicie nieprawidłowo, a inne wydają się działać dobrze, ale mają dziwne niespodzianki. Zamiast tego wolisztype
.type -a lshw
PATH
jest zmienną środowiskową i można ją wyświetlić za pomocą polecenia echo:To lista ścieżek oddzielonych dwukropkiem '
:
'which
Polecenia powie Ci, który plik zostanie wykonany po uruchomieniu polecenia:czasami otrzymujesz ścieżkę do dowiązania symbolicznego; jeśli chcesz prześledzić ten link do miejsca, w którym znajduje się rzeczywisty plik wykonywalny, możesz użyć
readlink
i przesłać mu dane wyjściowewhich
:-f
Parametr nakazujereadlink
zachować następujące dowiązania rekurencyjnie.Oto przykład z mojego komputera:
źródło
źródło
W powłoce TENEX C, tcsh , można wyświetlić listę lokalizacji polecenia lub, jeśli jest to polecenie wbudowane, za pomocą
where
polecenia np:źródło
Powłoka Korn
ksh
oferujewhence
wbudowaną funkcję , która identyfikuje inne elementy wbudowane powłoki, makra itp.which
Polecenie jest jednak bardziej przenośne.źródło
whence -a
jest podobny do Bashatype -a
.Alternatywa dla
type -a
jestcommand -V
Ponieważ przez większość czasu interesuje mnie tylko pierwszy wynik, również piszczę z głowy. W ten sposób ekran nie zostanie zalany kodem w przypadku funkcji bash.
źródło