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