.. _cmd-pushd:

pushd - push directory to directory stack
=========================================

Synopsis
--------

``pushd`` *DIRECTORY*

Description
-----------

The ``pushd`` function adds ``DIRECTORY`` to the top of the :ref:`directory stack <directory-stack>` and makes it the current working directory. :ref:`popd <cmd-popd>` will pop it off and return to the original directory.

Without arguments, it exchanges the top two directories in the stack.

``pushd +NUMBER`` rotates the stack counter-clockwise i.e. from bottom to top

``pushd -NUMBER`` rotates clockwise i.e. top to bottom.

Example
-------

::

    cd ~/dir1
    pushd ~/dir2
    pushd ~/dir3
    # Working directory is now ~/dir3
    # Directory stack contains ~/dir2 ~/dir1

    pushd /tmp
    # Working directory is now /tmp
    # Directory stack contains ~/dir3 ~/dir2 ~/dir1

    pushd +1
    # Working directory is now ~/dir3
    # Directory stack contains ~/dir2 ~/dir1 /tmp

    popd
    # Working directory is now ~/dir2
    # Directory stack contains ~/dir1 /tmp

See Also
--------

- the :ref:`dirs <cmd-dirs>` command to print the directory stack
- the :ref:`cdh <cmd-cdh>` command which provides a more intuitive way to navigate to recently visited directories.