У меня были некоторые проблемы, чтобы сделать правильную «очистку pushd/popd» в моем сценарии bash. То есть: если я сделал pushd
несколько раз, я хотел убедиться, что сделал такое же количество popd
до exit
.
Однако я заметил, что стек pushd/popd не кажется глобальным.
Предположим, у меня есть этот скрипт с именем example-pushd-twice.sh
в моем домашнем каталоге:
pushd /etc
pushd /tmp
И я делаю это из оболочки из своего домашнего каталога: (результат вывода в кавычках)
dirs
~
./example-pushd-twice.sh
/etc ~
/tmp /etc ~
Теперь я ожидал, что все еще буду в /tmp
и все еще буду иметь стек каталогов с 3 каталогами, однако:
dirs
~
Это правильное поведение? Могу ли я доверять скрипту оболочки, чтобы он вызывал свой собственный стек pushd/popd, чтобы мне не нужно было потом заботиться об очистке?