Jak dodać katalog do swojej $ PATH w systemie Linux

Udostępnij teraz w social media:

$ PATH to jeden z cichych manipulatorów w tle twojego komputera z Linuksem. Po cichu wpływa na wrażenia użytkownika, ale nie ma w tym nic podejrzanego. Wyjaśnimy, do czego służy i jak możesz to dostosować.

Co to jest $ PATH w systemie Linux i jak to działa?

Po wpisaniu polecenia w oknie terminala i naciśnięciu klawisza Enter rozpoczynasz sporo czynności, zanim polecenie zostanie wykonane.

Grzmotnąć jest domyślną powłoką w większości dystrybucji Linuksa. Interpretuje wprowadzony wiersz tekstu i identyfikuje nazwy poleceń przeplatane parametrami, rurami, przekierowaniai cokolwiek tam jest. Następnie lokalizuje wykonywalne pliki binarne dla tych poleceń i uruchamia je z podanymi parametrami.

Pierwszym krokiem wykonywanym przez powłokę w celu zlokalizowania pliku wykonywalnego jest określenie, czy w grę wchodzi nawet plik binarny. Jeśli polecenie, którego używasz, znajduje się w samej powłoce (plik „Wbudowana powłoka”) nie jest wymagane dalsze wyszukiwanie.

Funkcje wbudowane powłoki są najłatwiejsze do znalezienia, ponieważ są integralną częścią powłoki. To tak, jakby mieć je w pasku narzędzi – zawsze są przy tobie.

Jeśli jednak potrzebujesz któregoś z pozostałych narzędzi, musisz poszperać w warsztacie, aby je znaleźć. Czy jest na stole warsztatowym czy na wieszaku ściennym? To właśnie robi zmienna środowiskowa $ PATH. Zawiera listę miejsc przeszukiwanych przez powłokę oraz kolejność, w jakiej będą przeszukiwane.

Jeśli chcesz sprawdzić, czy polecenie jest plikiem wbudowana powłoka, alias, funkcja lub samodzielny plik binarny mv / work / unfile, możesz użyć polecenia type, jak pokazano poniżej:

type clear
type cd

To mówi nam, że clear jest plikiem binarnym, a pierwszy znaleziony w ścieżce znajduje się w / usr / bin. Być może na komputerze jest zainstalowana więcej niż jedna wersja Clear, ale to jest ta, której powłoka będzie próbowała użyć.

Nic dziwnego, że cd jest wbudowaną powłoką.

Wystawianie Twojego $ PATH

Łatwo jest zobaczyć, co stoi na twojej drodze. Po prostu wpisz następujące polecenie, aby użyć polecenia echo i wydrukuj wartość przechowywana w zmiennej $ PATH:

echo $PATH

Plik

Dane wyjściowe to lista lokalizacji systemu plików rozdzielonych dwukropkami (:). Powłoka przeszukuje ścieżkę od lewej do prawej, sprawdzając lokalizację każdego systemu plików pod kątem pasującego pliku wykonywalnego do wykonania polecenia.

  Jak zainstalować Wireshark w systemie Linux

Możemy przejść przez listę, aby zobaczyć lokalizacje systemu plików, które będą przeszukiwane, oraz kolejność, w jakiej będą przeszukiwane:

/ usr / local / sbin
/ usr / local / bin
/ usr / sbin
/ usr / bin
/ sbin
/kosz
/ usr / games
/ usr / local / games
/ snap / bin

Coś, co może nie być od razu oczywiste, to fakt, że wyszukiwanie nie rozpoczyna się w bieżącym katalogu roboczym. Raczej działa poprzez wymienione katalogi i tylko wymienione katalogi.

Jeśli bieżący katalog roboczy nie znajduje się w Twojej ścieżce, nie zostanie przeszukany. Ponadto, jeśli masz polecenia przechowywane w katalogach, których nie ma w ścieżce, powłoka ich nie znajdzie.

Aby to zademonstrować, stworzyliśmy mały program o nazwie rf. Po uruchomieniu rf wypisuje nazwę katalogu, z którego został uruchomiony, w oknie terminala. Znajduje się w / usr / local / bin. Mamy również nowszą wersję w katalogu / dave / work.

Wpisujemy następujące polecenie aby pokazać nam, która wersja naszego programu powłoka znajdzie i użyje:

which rf

Plik

Powłoka zgłasza, że ​​znaleziona wersja jest wersją w katalogu, który znajduje się w ścieżce.

Aby go uruchomić, wpisujemy:

rf

Plik

Wersja 1.0 rf działa i potwierdza, że ​​nasze oczekiwania były prawidłowe. Znaleziona i wykonana wersja znajduje się w / usr / local / bin.

Aby uruchomić dowolną inną wersję rf na tym komputerze, będziemy musieli użyć ścieżki do pliku wykonywalnego w wierszu poleceń, jak pokazano poniżej:

./work/rf

Plik

Teraz, gdy powiedzieliśmy powłoce, gdzie znaleźć wersję rf, którą chcemy uruchomić, używa wersji 1.1. Jeśli wolimy tę wersję, możemy skopiować ją do katalogu / usr / local / bin i nadpisać starą.

Powiedzmy, że tworzymy nową wersję rf. Będziemy musieli często go uruchamiać, gdy go opracowujemy i testujemy, ale nie chcemy kopiować niewydanej wersji deweloperskiej do środowiska na żywo.

A może pobraliśmy nową wersję rf i chcemy przeprowadzić na niej testy weryfikacyjne, zanim udostępnimy ją publicznie.

Jeśli dodamy nasz katalog roboczy do ścieżki, sprawimy, że powłoka znajdzie naszą wersję. A ta zmiana wpłynie tylko na nas – inni nadal będą używać wersji rf w / usr / local / bin.

Dodawanie katalogu do $ PATH

Możesz użyć polecenia eksportu do dodać katalog do $ PATH. Katalog jest następnie uwzględniany na liście lokalizacji systemu plików przeszukiwanych przez powłokę. Kiedy powłoka znajdzie pasujący plik wykonywalny, przestaje szukać, więc chcesz się upewnić, że przeszuka najpierw twój katalog, przed / usr / local / bin.

  4 najlepsze edytory tekstu dla programistów w systemie Linux

To jest łatwe do zrobienia. W naszym przykładzie wpisujemy następujące polecenie, aby dodać nasz katalog na początku ścieżki, aby była to pierwsza wyszukiwana lokalizacja:

export PATH=/home/dave/work:$PATH

Plik

To polecenie ustawia $ PATH jako równe katalogowi, który dodajemy, / home / dave / work, a następnie całej bieżącej ścieżce.

Pierwsza PATH nie ma znaku dolara ($). Ustawiamy wartość PATH. Ostatnia $ PATH ma znak dolara, ponieważ odwołujemy się do zawartości przechowywanej w zmiennej PATH. Zwróć także uwagę na dwukropek (:) między nowym katalogiem a nazwą zmiennej $ PATH.

Zobaczmy, jak wygląda teraz ścieżka:

echo $PATH

Plik

Nasz katalog / home / dave / work jest dodawany na początku ścieżki. Resztę ścieżki oddziela dwukropek, który podaliśmy.

Wpisujemy następujące polecenie, aby sprawdzić, czy nasza wersja rf jest pierwszą znalezioną:

which rf

Plik

Dowód w budyniu działa rf, jak pokazano poniżej:

rf

Plik

Powłoka znajduje wersję 1.1 i wykonuje ją z / home / dave / work.

Aby dodać nasz katalog na koniec ścieżki, po prostu przenosimy go na koniec polecenia, na przykład:

export PATH=$PATH:/home/dave/work

Trwałe zmiany

Tak jak Beth Brooke-Marciniak powiedział: „Sukces jest w porządku, ale sukces jest ulotny”. W momencie, gdy zamkniesz okno terminala, wszelkie zmiany wprowadzone w $ PATH znikną. Aby uczynić je trwałymi, musisz umieścić polecenie eksportu w pliku konfiguracyjnym.

Kiedy umieścisz polecenie eksportu w pliku .bashrc, ustawia ścieżkę za każdym razem, gdy otwierasz okno terminala. w odróżnieniu Sesje SSH, dla których musisz się zalogować, są to sesje „interaktywne”.

W przeszłości należało umieścić polecenie eksportu w pliku .profile, aby ustawić ścieżkę do logowania w sesjach terminala.

Okazało się jednak, że jeśli umieścimy polecenie eksportu w plikach .bashrc lub .profile, poprawnie ustawi ono ścieżkę zarówno dla sesji interaktywnych, jak i sesji logowania. Twoje doświadczenie może być inne. Aby poradzić sobie ze wszystkimi ewentualnościami, pokażemy Ci, jak to zrobić w obu plikach.

Użyj następującego polecenia w katalogu / home, aby edytować plik .bashrc:

gedit .bashrc

Plik

Otworzy się edytor gedit z załadowanym plikiem .bashrc.

Edytor gedit z rozszerzeniem

Przewiń do końca pliku, a następnie dodaj następujące polecenie eksportu, którego użyliśmy wcześniej:

export PATH=/home/dave/work:$PATH

Zapisz plik. Następnie zamknij i ponownie otwórz okno terminala lub użyj polecenia kropka, aby odczytać plik .bashrc w następujący sposób:

  Jak uruchomić SpeedTest z terminala Linux

. .bashrc

Następnie wpisz następujące polecenie echo, aby sprawdzić ścieżkę:

echo $PATH

Plik

Spowoduje to dodanie katalogu / home / dave / work na początku ścieżki.

Proces dodawania polecenia do pliku .profile jest taki sam. Wpisz następujące polecenie:

gedit .profile

Plik

Edytor gedit uruchamia się z załadowanym plikiem .profile.

Edytor gedit z rozszerzeniem

Dodaj polecenie eksportu na końcu pliku, a następnie zapisz je. Zamknięcie i otwarcie nowego okna terminala jest niewystarczające, aby wymusić ponowne odczytanie pliku .profile. Aby nowe ustawienia zaczęły obowiązywać, musisz się wylogować i zalogować ponownie lub użyć polecenia kropka, jak pokazano poniżej:

. .profile

Wyznaczanie ścieżki dla każdego

Aby ustawić ścieżkę dla wszystkich użytkowników systemu, możesz edytować plik / etc / profile.

Będziesz musiał użyć sudo w następujący sposób:

sudo gedit /etc/profile

Po uruchomieniu edytora gedit dodaj polecenie eksportu na końcu pliku.

Edytor gedit z rozszerzeniem

Zapisz i zamknij plik. Zmiany zaczną obowiązywać dla innych, gdy następnym razem się zalogują.

Uwaga dotycząca bezpieczeństwa

Upewnij się, że nie dodałeś przypadkowo początkowego dwukropka „:” do ścieżki, jak pokazano poniżej.

Plik

Jeśli to zrobisz, najpierw przeszuka bieżący katalog, co stwarza zagrożenie bezpieczeństwa. Powiedzmy, że pobrałeś plik archiwum i rozpakowałeś go do katalogu. Patrzysz na pliki i widzisz inny spakowany plik. Ponownie wywołujesz unzip, aby wyodrębnić to archiwum.

Jeśli pierwsze archiwum zawierało plik wykonywalny o nazwie unzip, który był złośliwym plikiem wykonywalnym, przypadkowo uruchomiłbyś ten plik zamiast prawdziwego pliku wykonywalnego unzip. Stałoby się tak, ponieważ powłoka najpierw szukałaby w bieżącym katalogu.

Dlatego zawsze zachowaj ostrożność podczas wpisywania poleceń eksportu. Użyj echo $ PATH, aby je przejrzeć i upewnić się, że są takie, jakie chcesz, aby były.

x