~USER é apenas uma notação abreviada para o diretório inicial do usuário USER . Para um usuário normal, isso normalmente seria /home/USER , mas, para root, normalmente é /root .
Quanto à sua pergunta se um é preferível ao outro: A única diferença é que ~root é expandido dinamicamente para o diretório inicial do root, enquanto /root é um caminho absoluto que não passa por nenhum processo de expansão. O que você quer depende do seu caso de uso específico. Se você quiser que seu script funcione em máquinas em que o diretório pessoal do root esteja em outro lugar que não seja em /root , use ~root . Se você quiser ter certeza de que o caminho absoluto /root é sempre usado, use /root .
Na prática, não deve fazer diferença na maioria dos casos, embora eu pessoalmente me sinta mais seguro usando /root a menos que eu tenha motivos para esperar que meu script seja executado em máquinas onde o diretório home do root não é /root .