Попробуйте заменить ~
на $HOME
. Расширение Тильды происходит только тогда, когда тильда не кавыдается. См. info "(bash) Tilde Expansion"
.
Вы также можете сделать file=~/Desktop
без цитирования, но если вы когда-нибудь замените часть этого чем-то разделителем поля в нем, тогда он сломается. Котировка значений переменных, вероятно, хорошая вещь, чтобы привыкнуть в любом случае. Котировка переменной file=~/"Desktop"
также будет работать, но я думаю, что это довольно уродливо.
Еще одна причина предпочесть $HOME
, когда это возможно: расширение тильды происходит только в начале слов. Таким образом, command --option=~/foo
будет работать только в том случае, если command
сам делает расширение тильды, которое будет меняться по команде, в то время как command --option="$HOME/foo"
всегда будет работать.