Це просто лише питання лексики, але яке в моїй голові постійно крутиться.
Він походить з іспиту на практику з книги підготовки LPIC . Правильна відповідь у книзі полягає в тому, що ~/Documents
це відносний каталог, оскільки він відносно домашнього каталогу.
Однак ця книга містить почесне співвідношення помилок друку і помилок, тому я не можу сприйняти як належне все, що там написано. Тут я не згоден, тому що для мене ~
діє як змінна, розширена оболонкою, або на вміст $HOME
змінної, або на поточний шлях до домашнього каталогу користувача (пор. man bash
), Тому власне шлях /home/myuser/Documents
є справді абсолютним каталогом.
Навіть Вікіпедія мені, здається, нічим не допомагає з цієї теми (навіть якщо це, здається, підтверджує, що книга в цій неправильній):
Абсолютний або повний шлях вказує на те саме місце у файловій системі незалежно від поточного робочого каталогу. Для цього він повинен містити кореневий каталог.
Навпаки, відносний шлях починається від деякого даного робочого каталогу, уникаючи необхідності надання повного абсолютного шляху.
І тут я знову не погоджуюся: згідно з цим визначенням шлях, /opt/kde3/bin/../lib
який не залежить від поточного робочого каталогу, повинен бути абсолютним, проте моє поточне розуміння цього питання відповідає автору книги, що робить цей шлях відносним.
Швидкий пошук в Інтернеті просто додає моїх розчарувань, згідно зі словником Вебстера :
абсолютний шлях - шлях відносно кореневого каталогу. Першим його символом повинен бути роздільник імені шляху.
Отже $HOME/Documents
, чи навіть просто $HOME
не вважалися б абсолютними каталогами? Або це визначення передбачає змінне розширення? Що з ~
характером оболонки ? Чи є якесь достовірне визначення відносного та абсолютного каталогу, яке я можу десь знайти, і я взагалі помиляюся?
~/foo
відносний шлях. Що ви отримуєте, це різниця між жорстким кодуванням та параметризацією. Дивіться мою відповідь для отримання більш детальної інформації.
~/Documents
і $HOME/Documents
не є шляхами. Вони ідентифікують (абсолютний) шлях після розширення, але вони самі не є шляхами. Я думаю, що це узгоджується з тим, скільки користувачів Unix / Linux використовують цей термін, але без сумніву, ці рядки також називаються самими шляхами.
/
, а ті, які ми називаємо абсолютними. Таким чином , все , що починається від/
я б назвав абсолютним (навіть якщо це/usr/../etc
) , і все інше , я б назвав відносними (~/Doc
,Doc
,../john/Doc
,$HOME/...
, ...). Справа в тому, що абсолют повинен працювати незалежно від поточного робочого каталогу чи поточного користувача. Відносні можуть працювати лише в деяких конкретних вузьких випадках.