Вы действительно /home/cpm135/public_html/class
- это единственный правильный ответ на вопрос «каков мой текущий рабочий каталог».
Когда вы ссылаетесь на /var/lib/class
... это не совсем о том, где вы находитесь, а больше о том, каким путем вы туда добирались .
Когда вы запускаете /bin/pwd
, он выясняет ваш текущий рабочий каталог, посмотрев на. и .. каталоги (перечисленные вверху ls -la
), определяющие , какой каталог в .. совпадает с. и затем работает в обратном направлении до .. и. обратитесь к той же директории. Как только все это будет сделано, он знает, какой у вас текущий рабочий каталог.
Когда вы запускаете pwd
встроенную оболочку, она не следует этой процедуре (хотя при необходимости она может выполнить некоторые из них) - вместо этого она запоминает путь, который вы выбрали, чтобы попасть сюда. Поэтому каждый раз, когда вы выполняете cd
команду, ваша оболочка запоминает это как часть пути, чтобы добраться до того места, где вы сейчас находитесь, и pwd
выводит на экран то, что она рассчитала на основе всех cd
команд, которые вы выполнили - что может или не может быть вашим фактическим рабочий каталог.
Когда вы делаете a ln -s . foo
и продолжаете работать cd
в foo, все может стать очень странным - /bin/pwd
скажет, что вы все еще находитесь в том же каталоге, но встроенная оболочка pwd
скажет, что вы находитесь в нем, /foo/foo/foo/foo/foo/foo
даже если такого каталога вообще не существует. (Тем не менее, вы, вероятно, можете cd
в это.)
Еще один источник путаницы - переименование каталогов. /bin/pwd
затем сразу же перейдет к изменению, но встроенный pwd
не будет, пока вы не сделаете что-то, что скажет, что старое имя каталога не имеет значения.