Não sei como você está chamando o script no atalho personalizado, mas há duas possibilidades:
- Você está chamando um intérprete (por exemplo,
sh /path/to/script): você está chamandoshou um shell incompatível: substituições de comandos como$(<file)são substituídas pelo conteúdo defileapenas no Bash ou compatível shells, então você pode estar chamando uma shell incompatível; - Você está chamando o script (por exemplo,
/path/to/script): o script não tem um shebang no topo.
Então:
- Se o primeiro, chame o intérprete correto (
bash /path/to/script); - Se o segundo, adicione um shebang na parte superior do script (
#!/bin/bash).
Como alternativa, faça algo feio (mas POSIX e portátil) como:
last=$(cat "$file")