Tilde Expansion and Wildcards
The shell does two different expansions related to filenames. The first is tilde expansion, and the second is variously termed wildcard expansion, globbing, or pathname expansion.
Tilde Expansion
The shell performs tilde expansion if the first
character of a command-line string is a tilde (~), or if the first character after any
unquoted colon in the value of a variable assignment (such as for the
PATH or CDPATH variables) is a tilde.
The purpose of tilde expansion is to replace a symbolic representation for a user's home directory with the actual path to that directory. The user may be named either explicitly, or implicitly, in which case it is the current user running the program:
$vi ~/.profileSame as vi $HOME/.profile $vi ~tolstoy/.profileEdit user tolstoy's .profile file
In the first case, the shell replaces the ~ with $HOME, the current user's home directory. In
the second case, the shell looks up user tolstoy in the system's password database,
and replaces ~tolstoy with tolstoy's home directory, whatever that may
be.
Tip
Tilde expansion first appeared in the Berkeley C shell, csh. It was intended primarily as an interactive feature. It proved to be very popular, and was adopted by the Korn shell, bash, and just about every other modern Bourne-style shell. It thus also found its way into the POSIX standard.
However (and there's always a "however"), many commercial Unix Bourne shells don't support it. Thus, you should not use tilde expansion inside ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access