sh shell (not
bash), which command in Linux/UNIX prints out my current directory?
$ *showmewhereiam* /sys/kernel/debug $
Super User is a question and answer site for computer enthusiasts and power users. It only takes a minute to sign up.Sign up to join this community
$ pwd /home/<username>
While the general answer is
pwd, note that this may give different results depending on how you reached a given directory, and whether the route included symbolic links.
For instance, if you have a directory called
real and a symbolic link to that directory called
virtual, and you
cd to the
virtual directory, then
pwd will show that
virtual directory name, even though the actual directory you are in is
To show the real underlying directory, use either
pwd -P or
readlink -f (for a arbitrary path):
$ mkdir real $ ln -s real virtual $ cd virtual $ pwd /home/username/tmp/virtual $ pwd -P /home/username/tmp/real $ readlink -f . /home/username/tmp/real
Note that shells often replace the
pwd command with their own internal version, so on my system (RHEL6), even though the
pwd(1) manual page suggests that
--physical will work as well as
-P, because I'm running
bash, it doesn't:
$ pwd --physical bash: pwd: --: invalid option pwd: usage: pwd [-LP] $ /bin/pwd --physical /home/username/tmp/real $ /usr/bin/env pwd --physical /home/username/tmp/real
As others said,
pwd usually does the job well enough. However, I'd like to add an idea which has helped me out.
On all shells in common use today, you're able to customize the appearance of the command prompt. I like to customize mine so that it shows me both the name of the computer I'm on and my working directory. That way, I always know where I am. (The computer name part helps me realize if the terminal window I'm using has been used to SSH into a remote server.) For example, when I open a new terminal window on my laptop, which I call Plastico, I see this:
Plastico ~> cd Desktop/ Plastico ~/Desktop> cd ~/Sites/raygunrobot.com Plastico ~/Sites/raygunrobot.com> cd /usr Plastico /usr>
You can see that it's abbreviating my home directory as
~. I find doing this for my terminal prompts is incredibly handy - I always know at a glance exactly where I am, even more so than I would by looking at a Finder window.
On tcsh, I do this by adding
set prompt = 'Plastico %~%# '
to my .tcshrc file in my home directory. I've done it on ksh too by adding
export PS1="Plastico $PWD $ " to my .profile file. But being a Linux user, you probably use Bash, which I don't have much experience with (I'm a weirdo like that). But it looks like I might be able to do it by adding
PS1="Plastico \w $ " to my .bashrc file.
Edit: Just noticed the OP states you're interested in sh, not bash. Oh well; hope folks find this useful regardless.
$ pwd /your/current/directory $
pwd comes from the print working directory.
pwd - print name of current/working directory
Print the full filename of the current working directory.
use PWD from environment, even if it contains symlinks
avoid all symlinks
display this help and exit
output version information and exit
NOTE: your shell may have its own version of pwd, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports.