5 Answers
5

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).

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 StewartNov 16 '10 at 11:20

Interestingly, Windows PowerShell also accepts ~ as a synonym for the user's home directoy.
–
JoeyNov 16 '10 at 13:51

Jeffery Snover has said that PowerShell was originally based around VIM/EMACs
–
Anonymous TypeNov 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 MouatNov 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.

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 RabinovitchSep 6 '12 at 6:14

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