Você pode resolver esse problema usando o comando eval :
#!/bin/bash
echo -n "Enter Directory Path:"
read dir1
eval cd "$dir1"
Porque no seu código $dir1 não armazenará ~/Desktop , mas armazenará /home/user/Desktop , para que você possa usar o comando eval.
Para entender o comando Eval Aqui