Ви справді перебуваєте /home/cpm135/public_html/class
- це єдина правильна відповідь на питання "який у мене поточний робочий каталог".
Коли ви посилаєтесь на /var/lib/class
... це не справді про те, де ви знаходитесь, а більше про те, яким шляхом ви проїхали туди .
Під час запуску /bin/pwd
він визначає поточний робочий каталог, переглядаючи. і .. каталоги (ті, що вказані вгорі ls -la
), які розробляють, який каталог у .. відповідає. а потім працює назад до .. і. посилайтеся на той самий каталог. Після того, як буде зроблено все це, він знатиме, що це ваш поточний робочий каталог.
Коли ви запускаєте pwd
вбудовану оболонку, вона не дотримується цієї процедури (хоча при необхідності вона може зробити якусь частину) - натомість вона запам'ятовує шлях, який ви пройшли сюди. Отже, кожен раз, коли ви виконуєте cd
команду, ваша оболонка пам'ятає, що в рамках шляху до того, де ви зараз знаходитесь, і pwd
виводить, що вона розрахована, виходячи з усіх cd
команд, які ви виконали - які можуть бути, а можуть і не бути вашими фактичними робочий каталог.
Речі можуть стати дуже дивними, коли ви робите ln -s . foo
та продовжуєте працювати cd
в foo - /bin/pwd
скажуть, що ви все ще в тому самому каталозі, але вбудована оболонка pwd
скаже, що ви перебуваєте /foo/foo/foo/foo/foo/foo
- хоча такого каталогу навіть насправді не існує. (Це сказав - ви, мабуть, можете cd
в це ввійти.)
Ще одне джерело плутанини є, якщо каталоги будуть перейменовані. /bin/pwd
Тоді негайно підходить до зміни, але вбудований pwd
не буде, поки ви не зробите щось, що скаже, що стара назва каталогів не має значення.