Замена тильды
Если слово начинается незамаскированным символом тильда (~), все символы до первой незамаскированной косой черты (или все символы, если незамаскированной косой черты в слове нет) считаются тильда-префиксом. Если ни один из символов тильда-префикса не замаскирован, его символы после тильды рассматриваются как возможное регистрационное имя. Если это регистрационное имя представляет собой пустую строку, тильда заменяется значением переменной HOME. Если переменная HOME не установлена, подставляется начальный каталог пользователя, выполняющего процесс командного интерпретатора. Если же тильда-префикс не пустой, подставляется начальный каталог соответствующего пользователя.
Если тильда-префикс имеет вид ~+, вместо него подставляется значение переменной PWD. Если тильда-префикс имеет вид ~-, вместо него подставляется значение переменной OLDPWD, если эта переменная установлена. Если среди символов после тильды в тильда-префиксе имеется число N, с необязательными префиксами + или -, тильда-префикс заменяется соответствующим элементом из стека каталогов, который был бы выдан встроенной командой при вызове с тильда-префиксом в качестве аргумента. Если символы после тильды содержат число без начального знака + или -, предполагается +.
Если соответствующего регистрационного имени не существует или замену тиильды выполнить не удалось, исходное слово остается без изменений.
Присваивания значений переменным проверяются на наличие незамаскированных тильда-префиксов сразу после : или =. В этих случаях также выполняется замена тильды. Соответственно, можно использовать имена файлов с тильдами в присваиваниях переменным PATH, MAILPATH и CDPATH, и командный интерпретатор выполнит необходимые замены.