Shell Script cree que el directorio no existe cuando se ejecuta cd

Tengo un script de shell (que obtengo en .bashrc) que me permite saltar a mi directorio de proyectos desde cualquier lugar.

cdp(){
  proj="~/dev/projects/$@/"
  builtin cd $proj
}

_my_cdp()
{
  local cur opts
      cur="${COMP_WORDS[COMP_CWORD]}"
      opts=$(ls ~/dev/projects/)
      COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
}

complete -o nospace -F _my_cdp cdp

El problema es que elcd en la línea 3 dice:

bash: cd: ~/dev/projects/jsonparse/: No such file or directory

Aquí está la salida de la consola completa que muestra el error y demuestra que el directorio existe.

amflare:~$ cd dev/projects/ (go to dir)
amflare:~/dev/projects$ ls -al (look at contents)
total 68
drwxrwxr-x 17 www-data amflare 4096 Dec 29 13:11 .
drwxrwxr-x  4 amflare amflare 4096 Dec  6 17:32 ..
drwxrwxr-x  3 www-data amflare 4096 Dec 22 17:33 bot
drwxrwxr-x  3 www-data amflare 4096 Dec 20 15:17 jsonparse
drwxrwxr-x  3 www-data amflare 4096 Dec 28 19:58 magic
drwxrwxr-x  2 www-data amflare 4096 Nov 11 14:42 test
amflare:~/dev/projects$ cd (go to home)
amflare:~$ cdp (run autocomplete)
bot         jsonparse   magic       test
amflare:~$ cdp jsonparse (pick target)
bash: cd: ~/dev/projects/jsonparse/: No such file or directory
amflare:~$ (still in home)

He intentado todo lo que puedo pensar y algunas cosas que Google me devolvió para otras distribuciones (estoy en Ubuntu Gnome 16.04). No importa lo que haga, el script de shell no reconocerá la existencia de nada dentro~/dev/projects/. Además, no funciona cuando tengo las funciones en.bashrc en sí, así que no creo que sea un problema de subshell. Avíseme si necesita más información. Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta