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