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á chamandosh
ou um shell incompatível: substituições de comandos como$(<file)
são substituídas pelo conteúdo defile
apenas 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")