Obviously I know about pwd and readlink, but is there a command to find out the real absolute path to the current directory (ie, resolving links and dots)?
Asked
Active
Viewed 1,987 times
3
Jonathan H
- 2,373
-
Whats up with readlink ? – 123 May 27 '16 at 13:55
-
@123 Resolving links is sort of the point of the question – Jonathan H May 27 '16 at 13:57
3 Answers
5
pwd -P
(in any POSIX shell), is the command you're looking for.
-P is for physical (as opposed to logical (-L, the default) where pwd mostly dumps the content of $PWD (which the shell maintains based on the arguments you give to cd or pushd)).
$ ln -s . /tmp/here
$ cd /tmp/here/here
$ cd ../here/here
$ pwd
/tmp/here/here/here
$ pwd -P
/tmp
Stéphane Chazelas
- 544,893
1
Use
$ env pwd
Or
$ /bin/pwd
Unless the variable POSIXLY_CORRECT is set, in which case you need to add -P.
The details:
The shell has a builtin called pwd which defaults to printing the value of shell's $PWD. In doing so, it may include logical paths (a default -L).
If you call the builtin with (-P) or use the external /bin/pwd:
$ ln -s . /tmp/here; cd /tmp/here/here/here
$ pwd
/tmp/here/here/here
$ pwd -P
/tmp
$ /bin/pwd
/tmp
The reason is that the external /bin/pwd defaults to the -P option.
From info pwd:
this implementation uses
-P' as the default unless thePOSIXLY_CORRECT' environment variable is set.
0
Using Python also works:
python -c "import os; print(os.path.realpath('.'))"
Jonathan H
- 2,373
-
Seems a little heavyweight to me to start a Python interpreter just to get the current path... – user May 27 '16 at 14:01
-
@MichaelKjörling :) Hence the question, but it turns out that RTFM was the answer to my question.. sorry about this! – Jonathan H May 27 '16 at 14:03
-
1
getcwd()from any language should work, no need to resort torealpath. The shell's interface togetcwd()is thepwdcommand, but by default, shells replace getcwd with a fancy version that tries to give some information on how you got there, hence the need for-Pthere. Other languages don't have that problem, so you can use theirgetcwd()there likeos.getcwd()forpython. – Stéphane Chazelas May 27 '16 at 14:05