У меня в .zshrc
setopt autopushd
Это заставляет cd действовать как pushd. Это означает, что у нас вообще нет стека. Когда я его использовал, я вообще не использовал стек, так как он удаляет стек из меня.
Я не уверен, в чем преимущество автопушда.
В чем преимущество автопушда?
pushd похож на cd, но он также помещает ваш текущий каталог в стек. Возможно, вы находитесь в каталоге / some / deep /, а затем вам нужно некоторое время покопаться в / var / www:
crb@server /some/deep/directory $ pushd /var/www/
/var/www /some/deep/directory
crb@server /var/www $ [do some stuff]
crb@server /var/www $ popd
/some/deep/directory
crb@server /some/deep/directory $
autopushd означает, что даже если вы наберете 'cd', вы получите эффект нажатия 'pushd', который вы не помните, что хотели использовать, пока не подумаете: «Чувак, я действительно хотел бы вернуться туда, где был раньше. ". Затем вы можете вернуться к истории каталогов.
Полезно знать, что вы всегда можете перейти в каталог, в котором вы были до этого (в отличие от родительского каталога), набрав «cd -».
редактировать Зачем использовать pushd, если можно использовать cd -?
cd /foo/bar
cd /baz
cd /somewhere/else
cd - поднимет вас только до / baz. pushd вернет вас туда, где вы были до того, как набрали cd / foo / bar.
Стек каталогов особенно полезен в сценариях, где вы не можете просто вернуться к истории команд и узнать имя каталога, в котором вы были:
pushd /var/foo
# run a command, which might well change your PWD at the end of its execution - especially if it fails
popd
Теперь вы гарантированно находитесь в / var / foo.