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