Eu acho que seu roteiro deve funcionar. Mas você pode adicionar algo a ele para obter um pouco mais de informações:
#!/bin/bash
T='xdg-mime query filetype '
echo "opening file " " of type " $T "with " 'xdg-mime query default $T'
xdg-open
echo "finished script"
ao executar este script (chamado my_open.sh) em um terminal como este:
my_open.sh path/to/somefile.txt
Eu recebo a seguinte saída:
opening file path/to/somefile.txt of type text/plain with gedit.desktop
finished script
que me diz que o caminho para o arquivo está ok, o tipo MIME é reconhecido e o arquivo desktop que é usado para abrir o arquivo também está ok. E o gedit abre com o arquivo em questão.
Agora, quando for executado em outro arquivo:
my_open.sh path/to/README
Eu recebo a seguinte saída:
opening file path/to/README of type text/x-readme with
finished script
Observe o tipo diferente de mimet e o arquivo da área de trabalho ausente. No entanto, o xdg-open abre o padrão para todos os arquivos de texto (gedit).
Então, você pode querer adicionar algo assim ao seu script e ver se obtém resultados inesperados (que você pode adicionar à sua pergunta ...).