Seu script parece bom o suficiente. Há apenas algumas melhorias necessárias:
#!/bin/bash
shopt -s nullglob
for fd in "/proc/$$/fd/"*; do
fd=${fd##*/}
case "$fd" in
0|1|2|255)
;;
*)
eval "exec $fd>&-"
;;
esac
done
exec "$@"
-
nullglob
impede que o padrão seja apresentado se nenhum arquivo for encontrado. - Globbing ou expansão de nome de arquivo com a ajuda do método de substituição de parâmetro
${v##pat}
é suficiente. Usarls
não é necessário. - Você pode usar apenas
"$@"
para representar todos os argumentos passados para o script.
O script é garantido para rodar sem qualquer dependência externa, então é tão bom quanto rodar um binário.