Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -DPROGRAM='bash' -DCONF_HOSTTYPE='x86_64'
-DCONF_OSTYPE='linux-gnu' -DCONF_MACHTYPE='x86_64-pc-linux-gnu'
-DCONF_VENDOR='pc' -DLOCALEDIR='/usr/share/locale' -DPACKAGE='bash' -DSHELL
-DHAVE_CONFIG_H -I. -I../bash -I../bash/include -I../bash/lib -g -O2 -Wall
uname output: Linux cirrus 3.0.0-13-generic #22-Ubuntu SMP Wed Nov 2 13:27:26
UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
Machine Type: x86_64-pc-linux-gnu
Bash Version: 4.2
Patch Level: 10
Release Status: release
Description:
popd does not appear to return a nonzero exit status when the directory
stack is empty anymore. The bash manual says the following for popd:
"If the popd command is successful, a dirs is performed as well, and
the return status is 0. popd returns false if an invalid option is
encountered, the directory stack is
empty, a non-existent directory stack entry is specified,
or the directory change fails."
I am seeing this problem on: Ubuntu 11.10 oneiric
bash package version: 4.2-0ubuntu4
Repeat-By:
Put some directories on the stack with pushd, then call popd and check
the return status. It is expected to be nonzero when the stack is empty or an
error occurs.
The following function should pop all dirs off the stack and then stop,
however the while loop continues infinitely:
popall ()
{
local not_done=0;
while [ $not_done -eq 0 ]; do
popd;
not_done=$?;
done
}