Безопасный способ использования eval - "$(printf "~/%q" "$dangerous_path")"
. Обратите внимание, что это специфичный для bash.
#!/bin/bash
relativepath=a/b/c
eval homedir="$(printf "~/%q" "$relativepath")"
echo $homedir # prints home path
Подробнее см. этот вопрос
. Также обратите внимание, что в случае zsh это будет так же просто, как echo ${~dangerous_path}