<code>pwd</code> (print working directory) is a shell command that reports the working directory path to standard output.
Although often associated with Unix, its predecessor Multics had a <code>pwd</code> command (which was a short name of the <code>print_wdir</code> command) from which the Unix command originated. The command is part of the X/Open Portability Guide since issue 2 of 1987. It was inherited into the first version of POSIX.1 and the Single Unix Specification. It appeared in Version 5 Unix. The version bundled in GNU Core Utilities was written by Jim Meyering.
The command is available in other shells and operating systems including SpartaDOS X, PANOS, and KolibriOS. PowerShell provides as an alias for the cmdlet <code>Get-Location</code>. An equivalent command in COMMAND.COM and Command Prompt is the <code>cd</code> command with no arguments. On Windows CE 5.0, <code>cmd.exe</code> includes a <code>pwd</code> command. The OpenVMS equivalent is <code>show default</code>.
The numerical computing environments MATLAB and GNU Octave include a <code>pwd</code> function with similar functionality.
The command is implemented as a shell builtin in many Unix shells including sh, ash, bash, ksh, and zsh. It can be implemented with the POSIX <code>getcwd()</code> or <code>getwd()</code> functions.
The following examples are based on a typical Unix-based implementation.
With no arguments, the command writes the working directory path to the terminal:
$ cd /home/example $ pwd /home/example
Display the working directory without any symbolic link info. If at a directory /home/symlinked that is a symlink to /home/realdir:
$ cd /home/symlinked $ pwd -P /home/realdir
Display the working directory with symbolic link info. Note: POSIX requires that the default behavior be as if the <code>-L</code> switch were provided.
$ pwd -L /home/symlinked
POSIX shells set the following environment variables while using the command: