Você redireciona stderr para stdout, mas também precisa redirecionar o stdout. Você está perdendo o >
e a ordem de redirecionamento é muito importante.
grub-mkconfig -o /boot/grub/grub.cfg >~/grub_error 2>&1
Quanto à diferença entre o console e a saída do terminal (e aparentemente a falta de redirecionamento no console), isso geralmente indica uma mensagem do kernel. Abra outro terminal e digite dmesg -w
. Em seguida, execute o programa ou script novamente. Você deve ver as mensagens que não foram redirecionadas no console, ou ausentes no terminal, enviadas pelo comando dmesg.