popd, не работающий как ожидалось

Это кажется этим pushd и popd не работают как ожидалось (выталкивающий последний продвинутый каталог), но он выталкивает первый каталог и после второго popd это переходит к корневому каталогу.

user@ubuntu:~$ pushd /tmp/dir1
/tmp/dir1 ~
user@ubuntu:/tmp/dir1$ pushd /tmp/dir2
/tmp/dir2 /tmp/dir1 ~
user@ubuntu:/tmp/dir2$ cd ..
user@ubuntu:/tmp$ popd
/tmp/dir1 ~
user@ubuntu:/tmp/dir1$ popd
~

Какая-либо причина этого?

Использование Ubuntu 16.04 LTS в плеере VMware Workstation 12

0
задан 14 July 2017 в 11:33

1 ответ

Это переходит к корневому каталогу после последнего поп, потому что Вы были в своем корневом каталоге, когда Вы продвинули /tmp/dir1 на этот стек. ~ Ваш корневой каталог. Эта часть:

user@ubuntu:~$ pushd /tmp/dir1
/tmp/dir1 ~

А именно, когда стопка каталога пуста, она добавляет текущий рабочий каталог к дну стека.

Вот пример от /etc:

bash-4.3$ cd /etc
bash-4.3$ pushd /usr
/usr /etc

popd поведение является также правильным, оно действительно удаляло самый старый продвинутый каталог, но Вы также пропустили часть, что оно переходит к новому главному каталогу после того, как старое было удалено. Прочитайте руководство снова:

popd [-n] [+n] [-n] Удаляет записи из стопки каталога. Без аргументов, удаляет главный каталог из стека и выполняет CD к новому главному каталогу.

Таким образом в Вашем случае со стеком /tmp/dir2 /tmp/dir1 ~ , сначала popd удаленный /tmp/dir2. Таким образом, какова новая вершина стека? /tmp/dir1, таким образом, это будет также работать cd /tmp/dir1.

Наблюдайте:

bash-4.3$ pwd
/etc
bash-4.3$ pushd /bin
/bin /etc
bash-4.3$ pushd /usr
/usr /bin /etc
bash-4.3$ pushd /sys
/sys /usr /bin /etc
bash-4.3$ popd
/usr /bin /etc
bash-4.3$ pwd
/usr
0
ответ дан 2 November 2019 в 22:27

Другие вопросы по тегам:

Похожие вопросы: