(bash.info) Tilde Expansion
Info Catalog
(bash.info) Brace Expansion
(bash.info) Shell Expansions
(bash.info) Shell Parameter Expansion
3.5.2 Tilde Expansion
---------------------
If a word begins with an unquoted tilde character (`~'), all of the
characters up to the first unquoted slash (or all characters, if there
is no unquoted slash) are considered a TILDE-PREFIX. If none of the
characters in the tilde-prefix are quoted, the characters in the
tilde-prefix following the tilde are treated as a possible LOGIN NAME.
If this login name is the null string, the tilde is replaced with the
value of the `HOME' shell variable. If `HOME' is unset, the home
directory of the user executing the shell is substituted instead.
Otherwise, the tilde-prefix is replaced with the home directory
associated with the specified login name.
If the tilde-prefix is `~+', the value of the shell variable `PWD'
replaces the tilde-prefix. If the tilde-prefix is `~-', the value of
the shell variable `OLDPWD', if it is set, is substituted.
If the characters following the tilde in the tilde-prefix consist of
a number N, optionally prefixed by a `+' or a `-', the tilde-prefix is
replaced with the corresponding element from the directory stack, as it
would be displayed by the `dirs' builtin invoked with the characters
following tilde in the tilde-prefix as an argument ( The Directory
Stack). If the tilde-prefix, sans the tilde, consists of a number
without a leading `+' or `-', `+' is assumed.
If the login name is invalid, or the tilde expansion fails, the word
is left unchanged.
Each variable assignment is checked for unquoted tilde-prefixes
immediately following a `:' or the first `='. In these cases, tilde
expansion is also performed. Consequently, one may use filenames with
tildes in assignments to `PATH', `MAILPATH', and `CDPATH', and the
shell assigns the expanded value.
The following table shows how Bash treats unquoted tilde-prefixes:
`~'
The value of `$HOME'
`~/foo'
`$HOME/foo'
`~fred/foo'
The subdirectory `foo' of the home directory of the user `fred'
`~+/foo'
`$PWD/foo'
`~-/foo'
`${OLDPWD-'~-'}/foo'
`~N'
The string that would be displayed by `dirs +N'
`~+N'
The string that would be displayed by `dirs +N'
`~-N'
The string that would be displayed by `dirs -N'
Info Catalog
(bash.info) Brace Expansion
(bash.info) Shell Expansions
(bash.info) Shell Parameter Expansion
automatically generated byinfo2html