На моей машине, из-за того, как у меня все настроено, делаем:
cd ~ # /work1/jleffler
cd ~jleffler # /u/jleffler
Первый обращает внимание на значение переменной среды $HOME
; Я намеренно установил $HOME
на локальную файловую систему вместо файловой системы, смонтированной на NFS. Второй читает из файла паролей (приблизительно; NIS немного усложняет) и обнаруживает, что файл паролей говорит, что мой домашний каталог - /u/jleffler
и изменяется на этот каталог.
Раздражает то, что большая часть программного обеспечения ведет себя так, как описано выше (и POSIX-спецификация для оболочки требует такого поведения). Я использую некоторое программное обеспечение (и у меня нет особого выбора в его использовании), которое обрабатывает информацию из файла паролей как текущее значение $ HOME, что неверно.
Применяя это к вопросу - как уже отмечали другие, 'cd ~x
' отправляется в домашний каталог пользователя 'x', а в более общем случае, когда выполняется расширение тильды, ~x
означает домашний каталог пользователя. 'x' (и это ошибка, если пользователь 'x' не существует).
Возможно, стоит упомянуть, что:
cd ~- # Change to previous directory ($OLDPWD)
cd ~+ # Change to current directory ($PWD)
Я не могу сразу найти применение для '~+
', если вы не сделаете несколько странных вещей с перемещением символических ссылок в пути, ведущем к текущему каталогу.
Вы также можете сделать:
cd -
То же самое, что и ~-
.