Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

What does the ~ mean in an absolute file path?

I see this in the output of things like build scripts but the path does not exist.

share|improve this question
Which operating system? – ChrisF Nov 16 '10 at 10:45
Isn't Windows the default dice-roll? – Pacerier Oct 15 '15 at 20:26

Normally it means the user's home directory e.g. ~mike/ would be the user mike's home directory, ~/ would be your own home directory. However, it is unclear to me whether ~/ and ~mike/ should be considered absolute or relative; it seems to depend on the definition given (if anyone can come up with an authorative reference, please post a comment).

Note that I'm talking about Unix based systems here.


share|improve this answer
They are absolute, because they are synonyms for absolute paths: on UNIX, the absolute path can be inferred from the contents of the /etc/login file. The expansion is traditionally done by the shell, but any language that has pretensions to be "scripting" will do this as well. – Charles Stewart Nov 16 '10 at 11:20
+1: I didn't know about the ~username/ thing. – Wuffers Nov 16 '10 at 13:21
Interestingly, Windows PowerShell also accepts ~ as a synonym for the user's home directoy. – Joey Nov 16 '10 at 13:51
Jeffery Snover has said that PowerShell was originally based around VIM/EMACs – Anonymous Type Nov 16 '10 at 22:21
@Charles Stewart arguably at least ~/ is relative as it depends on the users context. Also some references define a absolute path as one given from the root of the filesystem, which these obviously aren't. If you have a reference for your statement, please share! – Adrian Mouat Nov 17 '10 at 17:02

Actually, both of the answers by Adrian Mouat and studiohack are true.
In operating systems with limited naming convention (Older version of Windows/DOS etc') it signifies a long name.

e.g. "c:\program files\" is equivalent to "c:\progra~1\"

In some operating systems (namely Unix) it means home-dir (and might be seen as an absolute but not canonical path).
e.g."/a/vol01/usr/mike/" might be shortened to "~/mike/"
* where 'usr' is the home dir.

share|improve this answer
In the context of build scripts, it is probably the Unix-centric version. – Charles Stewart Nov 16 '10 at 11:22
Unix paths usually use forward-slashes rather than backslashes. – Torben Gundtofte-Bruun Nov 16 '10 at 13:52
@torbengb, true...opps – Eran Nov 16 '10 at 14:05
A small correction to Xenorose's otherwise excellent answer. File names like "progra~1" are not for older OSs. My Windows 7 system still uses them. (Do dir /x to see.) This is a legacy feature that supports old software that doesn't know about the long file names in modern systems. Old software thinks all filenames follow the 8.3 convention. When a file name doesn't work with this convention, the file system automatically creates a second, 8.3 compatible name. – Isaac Rabinovitch Sep 6 '12 at 6:14

On many file systems, a file name will contain a tilde (~) within each component of the name that is too long to comply with 8.3 naming rules.

Source: Naming Files, Paths, and Namespaces - Short vs. Long Names - MSDN

(Part-way down the page...)

share|improve this answer
Hmm, doesn't quite work for names that contain dots. (e.g. or somefile.namewithdot) – Pacerier Oct 15 '15 at 20:38

And if you do ASP.NET programming it means the top level of the website; rather than navigating using ../../images/some_image.jpg (and getting your nesting level wrong!) you can simply say ~/images/some_image.jpg

share|improve this answer
/images/some_image.jpg should take you to the root of any web site. What additional functionality does the tilde provide in ASP.NET? – Sonny Nov 16 '10 at 16:12
~ takes you to the web application root which is not the same as the web site root if you're using a virtual directory. For example, if your website is installed on myserver in virtual directory myapp, ~/images/myimage.jpg will resolve to myserver/myapp/images/myimage.jpg. See – MCS Nov 16 '10 at 16:18

Here is a couple of hints that can help you to figure it out better:

$ readlink -f ~

$ echo $HOME

Note: $ is a convention to specify the user command line prompt, it is not a part of the commands.

share|improve this answer
'readlink' is not recognized as an internal or external command. – Pacerier Oct 15 '15 at 20:27
@vtest that's because the example in this comment is for unix-based systems, not Windows. – dudewad Mar 14 at 20:40

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .