<Poprzedni | Spis treści | Następne>
3.2. Orientacja w systemie plików
3.2.1. Ścieżka
Gdy chcesz, aby system wykonał polecenie, prawie nigdy nie musisz podawać pełnej ścieżki do tego polecenia. Na przykład wiemy, że ls polecenie znajduje się w /kosz katalog (sprawdź za pomocą który -a ls), ale nie musimy wpisywać polecenia /bin/ls aby komputer wyświetlał zawartość bieżącego katalogu.
Połączenia PATH dba o to zmienna środowiskowa. Ta zmienna wyświetla listę katalogów w systemie, w których można znaleźć pliki wykonywalne, dzięki czemu oszczędza użytkownikowi dużo wpisywania i zapamiętywania lokalizacji poleceń. Tak więc ścieżka naturalnie zawiera wiele katalogów zawierających kosz gdzieś w ich nazwach, jak pokazuje poniższy użytkownik. ten przegapić Polecenie służy do wyświetlania zawartości ("$") zmiennej PATH:
stary:> echo $ ŚCIEŻKA
/opt/local/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin/:/bin
stary:> echo $ ŚCIEŻKA
/opt/local/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin/:/bin
W tym przykładzie katalogi /opt/lokalny/bin, /usr/X11R6/bin, / usr / bin, / usr / sbin i
/kosz są następnie przeszukiwane pod kątem wymaganego programu. Gdy tylko zostanie znaleziony odpowiednik, wyszukiwanie jest zatrzymywane, nawet jeśli nie wszystkie katalogi w ścieżce zostały przeszukane. Może to prowadzić do dziwnych sytuacji. W pierwszym przykładzie poniżej użytkownik wie, że istnieje program o nazwie Wyślij SMS wysłać wiadomość SMS, a inny użytkownik w tym samym systemie może z niej skorzystać, ale ona nie. Różnica polega na konfiguracji PATH zmienna:
[jenny@blob jenny] $ Wyślij SMS bash: sendsms: nie znaleziono polecenia [jenny@blob jenny]$ echo $PATH
/bin:/usr/bin:/usr/bin/X11:/usr/X11R6/bin:/home/jenny/bin [jenny@blob jenny]$ su - tony
Hasło: tony:~>który wysyła sms
sendsms to /usr/local/bin/sendsms
tony:~>echo $PATH
/home/tony/bin.Linux:/home/tony/bin:/usr/local/bin:/usr/local/sbin:\
/usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin
[jenny@blob jenny] $ Wyślij SMS bash: sendsms: nie znaleziono polecenia [jenny@blob jenny]$ echo $PATH
/bin:/usr/bin:/usr/bin/X11:/usr/X11R6/bin:/home/jenny/bin [jenny@blob jenny]$ su - tony
Hasło: tony:~>który wysyła sms
sendsms to /usr/local/bin/sendsms
tony:~>echo $PATH
/home/tony/bin.Linux:/home/tony/bin:/usr/local/bin:/usr/local/sbin:\
/usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin
Zwróć uwagę na użycie su (switch user), który pozwala na uruchomienie powłoki w środowisku innego użytkownika, pod warunkiem znajomości hasła użytkownika.
Odwrotny ukośnik oznacza kontynuację wiersza w następnym, bez Wchodzę oddzielanie jednej linii od drugiej.
W następnym przykładzie użytkownik chce zadzwonić na wc (liczba słów) polecenie, aby sprawdzić liczbę wierszy w pliku, ale nic się nie dzieje i musi przerwać akcję za pomocą Ctrl+C połączenie:
zworka:~> wc -l test
(Ctrl+C)
zworka:~> która toaleta
wc jest zahaszowane (/home/jumper/bin/wc)
zworka:~> echo $ ŚCIEŻKA
/home/skoczek/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin
zworka:~> wc -l test
(Ctrl+C)
zworka:~> która toaleta
wc jest zahaszowane (/home/jumper/bin/wc)
zworka:~> echo $ ŚCIEŻKA
/home/skoczek/bin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin
Użycie liczby który polecenie pokazuje nam, że ten użytkownik ma kosz-katalog w jego katalogu domowym, zawierający program o nazwie wc. Ponieważ program w jego katalogu domowym znajduje się jako pierwszy podczas wyszukiwania
ścieżki na wezwanie wc, ten "domowy" program jest wykonywany, z danymi wejściowymi, których prawdopodobnie nie rozumie, więc musimy go zatrzymać. Aby rozwiązać ten problem, jest kilka sposobów (zawsze jest kilka sposobów rozwiązania problemu w UNIX/Linux): jedną z odpowiedzi może być zmiana nazwy użytkownika wc lub użytkownik może podać pełną ścieżkę do żądanego polecenia, które można znaleźć za pomocą -a opcja do który dowództwo.
Jeśli użytkownik częściej korzysta z programów w innych katalogach, może zmienić swoją ścieżkę, aby zajrzeć do własnych katalogów jako ostatni:
zworka:~> eksport PATH=/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin:/home/skoczek/bin
zworka:~> eksport PATH=/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:\
/usr/bin:/usr/sbin:/bin:/sbin:/home/skoczek/bin
Zmiany nie są trwałe!