Skip to main content
popd should be used for popping back, otherwise the directory stack would be affected
Source Link
Bernhard
  • 12.6k
  • 5
  • 62
  • 70

The other answers are definitely complete in the direct answer sense. cd - and cd $OLDPWD are definitely the main choices for this. However, I often find that getting into a workflow with pushd and popd works better.

Long story short, if you are moving into a directory with the ultimate intent of coming back to where you started, use pushd/popd.

Extended example

The major difference is easily shown by an example.

$ cd dir1 $ pushd dir2 

At this point, you have a directory stack that is dir2, dir1. Running pushd with no arguments will put you back in dir1 with the stack now as dir1, dir2. popd would do the same, but would leave you with an empty directory stack. This is not much different than how you would have been with the cd - workflow.

However, now you can now change directories multiple times and get back to dir1. For example,

$ cd dir1 $ pushd dir2 $ cd dir3 

If you run pushd/popd at this point, you will again go back to dir1.

The other answers are definitely complete in the direct answer sense. cd - and cd $OLDPWD are definitely the main choices for this. However, I often find that getting into a workflow with pushd and popd works better.

Long story short, if you are moving into a directory with the ultimate intent of coming back to where you started, use pushd/popd.

Extended example

The major difference is easily shown by an example.

$ cd dir1 $ pushd dir2 

At this point, you have a directory stack that is dir2, dir1. Running pushd with no arguments will put you back in dir1 with the stack now as dir1, dir2. popd would do the same, but would leave you with an empty directory stack. This is not much different than how you would have been with the cd - workflow.

However, now you can now change directories multiple times and get back to dir1. For example,

$ cd dir1 $ pushd dir2 $ cd dir3 

If you run pushd/popd at this point, you will again go back to dir1.

The other answers are definitely complete in the direct answer sense. cd - and cd $OLDPWD are definitely the main choices for this. However, I often find that getting into a workflow with pushd and popd works better.

Long story short, if you are moving into a directory with the ultimate intent of coming back to where you started, use pushd/popd.

Extended example

The major difference is easily shown by an example.

$ cd dir1 $ pushd dir2 

At this point, you have a directory stack that is dir2, dir1. Running pushd with no arguments will put you back in dir1 with the stack now as dir1, dir2. popd would do the same, but would leave you with an empty directory stack. This is not much different than how you would have been with the cd - workflow.

However, now you can now change directories multiple times and get back to dir1. For example,

$ cd dir1 $ pushd dir2 $ cd dir3 

If you run popd at this point, you will go back to dir1.

Source Link
Josh Berry
  • 861
  • 5
  • 4

The other answers are definitely complete in the direct answer sense. cd - and cd $OLDPWD are definitely the main choices for this. However, I often find that getting into a workflow with pushd and popd works better.

Long story short, if you are moving into a directory with the ultimate intent of coming back to where you started, use pushd/popd.

Extended example

The major difference is easily shown by an example.

$ cd dir1 $ pushd dir2 

At this point, you have a directory stack that is dir2, dir1. Running pushd with no arguments will put you back in dir1 with the stack now as dir1, dir2. popd would do the same, but would leave you with an empty directory stack. This is not much different than how you would have been with the cd - workflow.

However, now you can now change directories multiple times and get back to dir1. For example,

$ cd dir1 $ pushd dir2 $ cd dir3 

If you run pushd/popd at this point, you will again go back to dir1.