To tylko pytanie słownictwa, które jednak wciąż kręci się w mojej głowie.
Pochodzi z egzaminu praktycznego z książki przygotowawczej LPIC . Prawidłowa odpowiedź według książki jest taka, że ~/Documents
jest to katalog względny, ponieważ jest względny do katalogu domowego.
Jednak ta książka zawiera honorowy stosunek literówek i błędów, więc nie mogę brać za pewnik wszystkiego, co tam jest napisane. Tutaj się nie zgadzam, ponieważ dla mnie ~
działa jak zmienna rozwinięta przez powłokę do zawartości $HOME
zmiennej lub bieżącej ścieżki katalogu domowego użytkownika (porównaj man bash
), więc rzeczywista ścieżka jest /home/myuser/Documents
katalogiem absolutnym.
Nawet Wikipedia , choć raz, nie wydaje mi się pomocna w tym temacie (nawet jeśli wydaje się potwierdzać, że książka jest błędna w tym temacie):
Bezwzględna lub pełna ścieżka wskazuje tę samą lokalizację w systemie plików, niezależnie od bieżącego katalogu roboczego. Aby to zrobić, musi zawierać katalog główny.
Natomiast ścieżka względna rozpoczyna się od określonego katalogu roboczego, unikając konieczności podawania pełnej ścieżki bezwzględnej.
Tutaj również się nie zgadzam: zgodnie z tą definicją ścieżka, /opt/kde3/bin/../lib
która nie zależy od bieżącego katalogu roboczego, powinna być absolutna, jednak moje obecne rozumienie tego odpowiada autorowi książki, czyniąc tę ścieżkę względną.
Według Webster Dictionary szybkie wyszukiwanie w Internecie tylko dodaje mi frustracji :
ścieżka bezwzględna - ścieżka względna do katalogu głównego. Pierwszym znakiem musi być separator nazwy ścieżki.
A $HOME/Documents
może po prostu $HOME
nie będą uważane za katalogi absolutne? A może ta definicja implikuje zmienną ekspansję? Co z ~
postacią muszli ? Czy jest jakaś wiarygodna definicja katalogu względnego i bezwzględnego, którą mogę znaleźć i czy się mylę przez całą drogę?
~/foo
ścieżki względnej. Dostajesz różnicę między kodowaniem na stałe a parametryzacją. Zobacz moją odpowiedź, aby uzyskać więcej informacji.
~/Documents
i $HOME/Documents
nie są ścieżkami. Po ekspansji identyfikują (absolutne) ścieżki, ale same nie są ścieżkami. Myślę, że zgadza się to z tym, ilu użytkowników Unix / Linux używa tego terminu, ale bez wątpienia te ciągi nazywane są również ścieżkami.
/
, a te, które nazywamy absolutnymi. Zatem wszystko, co zaczyna się od/
nazwałbym absolutny (nawet jeśli jest/usr/../etc
) i wszystko co nazwałbym względna (~/Doc
,Doc
,../john/Doc
,$HOME/...
, ...). Chodzi o to, że absolut powinien działać niezależnie od bieżącego katalogu roboczego lub bieżącego użytkownika. Względny może działać tylko w niektórych szczególnych wąskich przypadkach.