На моей машине, из-за того, как я все настроил, делаю:
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 -
Это означает то же, что и ~-
.