In Bash, cd changes the working directory of the current shell. Use cd .. to move to the parent directory, cd - to return to the previous one, and quote path variables—such as cd -- "$HOME/Project Files"—to handle spaces and paths beginning with a hyphen safely.
How to use cd in Linux
cd is a Bash builtin: it changes the current shell’s working directory. Because it changes the shell itself, it cannot be replaced by an ordinary external command; the Bash manual notes that builtins such as cd directly manipulate the shell.
Run cd without an operand to go to the directory in $HOME. Supply a path to change to another directory:
cd /var/logchanges to an absolute path, which starts at/.cd projectschanges to a relative path, resolved from the current directory.cd ./projectsmakes the current-directory starting point explicit.
For example, if your current directory is /home/lee, cd projects and cd ./projects both target /home/lee/projects.
Free tools Windows power users keep installed
One-click scans. No signup required.
#1 Best Overall
How to move up or return to the previous directory
Move to the parent directory
Use cd .. to move to the parent of the current directory. The special path component .. means “parent”; it is subject to filesystem path validity and symlink behavior.
Switch between the current and previous directories
cd - changes to the directory held in $OLDPWD, usually the directory you were in before the last successful change. Bash prints the destination path when this succeeds. After a successful directory change, Bash sets $PWD to the new directory name and $OLDPWD to the directory you left.
How to handle spaces and paths beginning with a hyphen
Quote expansions that may contain spaces or shell-special characters so the shell passes the path as one argument. Use -- before a variable when a path might begin with a hyphen, preventing it from being interpreted as an option:
cd -- "$HOME/Project Files"
cd -- "$target"
-- marks the end of options; quoting preserves the path as a single argument. Both are useful when a path comes from a variable or user input.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Why cd may print an unexpected path
Bash can use CDPATH, a colon-separated list of directories, to search for a destination when the operand is non-absolute. An empty component in CDPATH represents the current directory. If Bash finds the destination through a non-empty CDPATH entry, a successful cd prints the resulting absolute pathname. That output can interfere with scripts that expect a quiet directory change.
Inspect the setting with:
printf '%sn' "$CDPATH"
For predictable behavior in automation, avoid exporting a broad CDPATH unless its search and output behavior is intentional.
Rank #4
What is the difference between cd -L and cd -P?
Bash uses logical mode (-L) by default. The distinction matters when a path contains symbolic links and ..:
- Logical mode: Bash processes
..before resolving symbolic links. - Physical mode:
cd -Presolves symbolic links as it traverses the path, before processing...
Use -P when you need navigation based on the physical filesystem location rather than the logical path through symlinks. To check the resulting path, use pwd -L for the logical name or pwd -P for the physical one. With cd -P -e, Bash also fails if it cannot determine the physical current directory after an otherwise successful change.
Best Value
How to use cd reliably in a script
Check the builtin’s status directly. It returns zero on success and non-zero on failure, so a script can stop rather than accidentally running later commands in the wrong directory:
if ! cd -- "$dir"; then
printf 'cannot enter %sn' "$dir" >&2
exit 1
fi
Run cd in the current shell when subsequent commands need to use the new directory. If it runs in a subshell—for example, as a component of a pipeline—the directory change does not affect the parent shell.
Quick Recap
Fix common cd errors
No such file or directory: Check the spelling and inspect the current location withpwdand the target’s parent withls. A relative path is resolved from wherever the shell currently is.Permission denied: The user needs permission to search or traverse the target directory. Check directory permissions along the path.- A path with spaces fails: Quote the path or variable, such as
cd -- "$dir". - A path is printed unexpectedly: Check
CDPATH; a non-empty matching entry can make Bash print the destination. - A symlink leads somewhere unexpected: Compare
cd -Landcd -P, then check the result withpwd -Lorpwd -P. - A script does not stay in the new directory: Confirm that
cdis running in the script’s current shell, not a subshell or pipeline component.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

