A27, есть такая фигня с тильдой в скриптах. Она там не работает.
Вместо тильды используйте переменную $HOME.
Дело в том что переменная "~" и литерал "~" неотличимы.
Если все таки ессть желание использовать тильду, то придется делать что то типа этого.
$ t=~/temp
$ eval t=$t
$ T='~/temp'
$ cp -r $T ./temp01
cp: cannot stat '~/temp': No such file or directory
$ eval T=$T
$ cp -r $T ./temp01
$