Jedną z rzeczy, które mnie zastanawiają co do Linuksa, jest to, że prawie wszystko jest w mojej ŚCIEŻCE. Rozumiem przez to każdą aplikację komputerową, w tym takie jak mapa znaków gnome i poprawki. Nie mają interfejsów wiersza poleceń, więc nie mogę wymyślić przypadku, w którym regularnie uruchamiałbym je z terminala - i w tym mało prawdopodobnym przypadku nie wyobrażam sobie, aby czuć się nieswojo z powodu konieczności wpisania pełnego ścieżki To wydaje się po prostu zagracone, ale może jest dobry powód.
Dlaczego tak się dzieje? Czy ma jakiś znaczący wpływ na wydajność lub łatwość konserwacji?
Wszystkie polecenia, które użytkownik może chcieć uruchomić, znajdują się w ŚCIEŻCE. Po to jest. Obejmuje to polecenia, które możesz uruchomić bezpośrednio, poleceń, że inni ludzie działają bezpośrednio i polecenia, które ty lub inni ludzie działają pośrednio, ponieważ są one wywoływane przez innych poleceń. Nie jest to ograniczone do poleceń uruchamianych z terminala: polecenia uruchamiane z GUI są również wyszukiwane w ścieżce wyszukiwania poleceń (ponownie, po to jest to).
Potrzeba wpisania pełnej ścieżki byłaby okropna: musisz dowiedzieć się, jaka jest pełna ścieżka! Musisz śledzić, czy jest on w /usr/bin(który zawiera większość programów dostarczanych z systemem operacyjnym), czy w /usr/local/bin(który zawiera programy instalowane ręcznie przez administratora, a także programy, które nie są częścią podstawowego systemu operacyjnego na niektórych warianty unix) lub w innym katalogu systemowym lub w katalogu domowym użytkownika.
Trudno jest odpowiedzieć na temat „wpływu na wydajność lub łatwość konserwacji”, ponieważ nie mówi się, z czym się porównuje. Jeśli porównujesz konieczność wpisywania pełnej ścieżki wszędzie, jest to koszmar dla łatwości konserwacji: jeśli kiedykolwiek przeniesiesz program lub chcesz zainstalować nowszą wersję niż ta, która była dostarczana z systemem operacyjnym lub została zainstalowana przez administratora systemu, tę ścieżkę musisz zastąpić wszędzie. Wpływ wyszukiwania nazwy na kilka katalogów jest znikomy.
Jeśli porównujesz z Windows, jest jeszcze gorzej: niektóre programy dodają nie tylko plik wykonywalny, ale także wszelkiego rodzaju bzdury do ŚCIEŻKI, a kończysz na PATHzmiennej długości mili, która wciąż nie obejmuje wszystkich programów, ponieważ wiele programów nie dodaje się do ŚCIEŻKI systemowej podczas ich instalowania.
To wygląda na całkiem racjonalne uzasadnienie. Dziękuję za wyjaśnienie! Trochę o zastępowaniu programu ma sens. W ogóle o tym nie myślałem :) Uderza mnie to, że lubię mieć małe i opisowe przestrzenie nazw, kiedy myślę o programowaniu, podczas gdy tutaj wszystko jest trochę w tej samej globalnej przestrzeni nazw (i kiedy to robimy spójrz na pełne ścieżki, w zupełnie nieokreślonych miejscach, takich jak * / bin). Sądzę jednak, że są to całkiem różne rzeczy.
Dylan McCall,
4
Zmienna PATH zawiera listę ścieżek katalogu. Gdy użytkownik wpisze polecenie bez podania pełnej ścieżki, lista jest sprawdzana, czy zawiera ścieżkę prowadzącą do polecenia. Nie ma w tym nic specyficznego dla terminala lub wiersza poleceń.
Co więcej, nie ma w tym nic specyficznego dla Linuksa. ŚCIEŻKA z mojego systemu XP zawiera % SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem, który prawdopodobnie obejmuje większość plików binarnych systemu Windows.
Katalogi w PATH są przeszukiwane w określonej kolejności i zatrzymują się, gdy tylko zostanie znalezione dopasowanie. Katalogi systemowe są zwykle na początku, aby dać im najwyższy priorytet. Użytkownicy powinni dołączyć niestandardowe ścieżki wyszukiwania na końcu.
Jeśli chodzi o wydajność: większość współczesnych powłok buforuje zawartość PATH, aby nie musiały skanować dysku za każdym razem, gdy użytkownik wprowadzi polecenie.
Ścieżka Windows obejmuje większość plików binarnych dostarczanych z systemem Windows, ale zwykłe instalowane aplikacje zwykle nie znajdują się w ŚCIEŻCE. (Cóż, aplikacje z komponentem wiersza poleceń dodają się do ŚCIEŻKI, ale te z GUI zwykle nie.)
cjm
Fajnie, zawsze zastanawiałem się nad porządkiem i jego znaczeniem. Co powiesz na ogólną zasadę? Mam (prawie) każdą kombinację usr, local, binoraz sbin(z wyjątkiem mój katalog domowy użytkownika).
Zmienna PATH zawiera listę ścieżek katalogu. Gdy użytkownik wpisze polecenie bez podania pełnej ścieżki, lista jest sprawdzana, czy zawiera ścieżkę prowadzącą do polecenia. Nie ma w tym nic specyficznego dla terminala lub wiersza poleceń.
Co więcej, nie ma w tym nic specyficznego dla Linuksa. ŚCIEŻKA z mojego systemu XP zawiera % SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem, który prawdopodobnie obejmuje większość plików binarnych systemu Windows.
Katalogi w PATH są przeszukiwane w określonej kolejności i zatrzymują się, gdy tylko zostanie znalezione dopasowanie. Katalogi systemowe są zwykle na początku, aby dać im najwyższy priorytet. Użytkownicy powinni dołączyć niestandardowe ścieżki wyszukiwania na końcu.
Jeśli chodzi o wydajność: większość współczesnych powłok buforuje zawartość PATH, aby nie musiały skanować dysku za każdym razem, gdy użytkownik wprowadzi polecenie.
źródło
usr
,local
,bin
orazsbin
(z wyjątkiem mój katalog domowy użytkownika).