Назад | Перейти на главную страницу

Как работает команда cd? (unix)

Может ли кто-нибудь объяснить мне, как cd - командная работа? человек cd говорит мне, что An argument of - is equivalent to $OLDPWD. Затем я обнаружил в сети, что $ OLDPWD - это предыдущий рабочий каталог, установленный командой cd. И когда я делаю cd - на моем unix я получаю -bash: cd: OLDPWD not set что сбивает меня с толку.

ОБНОВИТЬ: теперь он работает, он дает мне предыдущий рабочий каталог. Думаю, я раньше не использовал команду и cd, поэтому $ OLDPWD не был установлен.

Еще один вопрос, что cd (введите cd и нажмите Enter) делает? Я бы не сказал, что ничего. Есть ли лучшее техническое объяснение?

host [~]# cd
host [~]#

OLDPWD не установлен, потому что вы не меняли каталог

[dave@odessa ~]$ cd -
-bash: cd: OLDPWD not set
[dave@odessa ~]$ cd /tmp
[dave@odessa tmp]$ cd -
/export/home/dave

[dave@odessa ~]$ cd /tmp
[dave@odessa tmp]$ echo $OLDPWD
/export/home/dave

cd без всяких аргументов будет chdir к $HOME

[dave@odessa tmp]$ echo $HOME
/export/home/dave
[dave@odessa tmp]$ HOME=/ cd
[dave@odessa /]$ pwd
/
type cd

говорит нам, что

cd - это встроенная оболочка

man sh

сообщает нам, что вы узнали:

Если в качестве аргумента указано одиночное тире, оно будет заменено значением OLDPWD.

Внутренняя реализация cd в оболочке делает чдырь (2) -системный вызов.

cd сам по себе изменяется в ваш домашний каталог

$ cd /tmp
$ pwd
/tmp
$ cd
$ pwd
/home/username