Good use for pushd / popd / dirs These days I'm often working with Yocto. A peculiar thing about Yocto is the ridiculous amount of directories it spawns, and high number of places in the file-system where to modify scripts or look at generated data. Using 'cd' to jump from one directory to the other can be quite slow. A possible solution could be using environment variables, e.g. path1=/path/to/place/1 path2=/where/to/find/another/place ... cd $path1 ... cd $path2 A more 'casual' approach could consist in making good use of the pushd/popd/dirs built-ins (bash). Example shell session: $ cd "$(mktemp -d)" $ mkdir -p ./foo/bar/baz ./lol/ ./path/to/this ./path/to/that $ dirs 0 /tmp/tmp.NMiIJ8GVmY $ pushd ./foo/bar/baz/ /tmp/tmp.NMiIJ8GVmY/foo/bar/baz /tmp/tmp.NMiIJ8GVmY $ dirs 0 /tmp/tmp.NMiIJ8GVmY/foo/bar/baz 1 /tmp/tmp.NMiIJ8GVmY $ pushd +1 /tmp/tmp.NMiIJ8GVmY /tmp/tmp.NMiIJ8GVmY/foo/bar/baz $ pushd ./path/to/this/ /tmp/tmp.NMiIJ8GVmY/path/to/this /tmp/tmp.NMiIJ8GVmY /tmp/tmp.NMiIJ8GVmY/foo/bar/baz $ dirs 0 /tmp/tmp.NMiIJ8GVmY/path/to/this 1 /tmp/tmp.NMiIJ8GVmY 2 /tmp/tmp.NMiIJ8GVmY/foo/bar/baz $ pushd +1 /tmp/tmp.NMiIJ8GVmY /tmp/tmp.NMiIJ8GVmY/foo/bar/baz /tmp/tmp.NMiIJ8GVmY/path/to/this $ pushd ./ foo/ lol/ path/ $ pushd ./path/to/that/ /tmp/tmp.NMiIJ8GVmY/path/to/that /tmp/tmp.NMiIJ8GVmY /tmp/tmp.NMiIJ8GVmY/foo/bar/baz /tmp/tmp.NMiIJ8GVmY/path/to/this $ dirs 0 /tmp/tmp.NMiIJ8GVmY/path/to/that 1 /tmp/tmp.NMiIJ8GVmY 2 /tmp/tmp.NMiIJ8GVmY/foo/bar/baz 3 /tmp/tmp.NMiIJ8GVmY/path/to/this