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

Может ли кто-нибудь объяснить мне, как 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 [~]#

3 ответа

Решение

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 в оболочке выполняет chdir (2) -syscall.

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

$ cd /tmp
$ pwd
/tmp
$ cd
$ pwd
/home/username
Другие вопросы по тегам