Usando a idéia de URL codificando os nomes de arquivos sugeridos por @Etan Reisner (em um comentário à minha pergunta acima), eu hackeei uma solução que eu gravo aqui para o benefício de outras pessoas na comunidade. No snippet abaixo, ${filename}
é o nome completo do arquivo (incluindo o caminho) a ser anexado.
#!/bin/bash
# "A safe way to URL encode is to encode every single byte, even
# those that would've been allowed." This is done by first
# converting every byte to its 2-byte hex code using 'hexdump' and
# then adding the prefix '%' to each 2-byte hex code pair using
# 'sed'.
#
# Attribution: https://stackoverflow.com/a/7506695
filenameurlencoded=$(echo -ne "${filename}" | \
hexdump -v -e '/1 "%02x"' | \
sed 's/\(..\)/%/g')
filenamenopath="$(basename ${filename})"
emailsubject="${filenamenopath}"
emailbody="\"${filenamenopath}\" is attached."
emailattachment="file:///${filenameurlencoded}"
# Syntax of -compose command line option: double-quotes enclose
# full comma-separated list of arguments passed to -compose,
# whereas single quotes are used to group items for the same
# argument.
#
# Attribution: http://kb.mozillazine.org/Command_line_arguments_(Thunderbird)
thunderbird -compose "subject='${emailsubject}',body='${emailbody}',attachment='${emailattachment}'"