Eu acho que o seu problema é esta linha:
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
BASH_SOURCE é uma "má substituição" para sh.
Por outro lado, encontrei isto:
udev does not run these programs on any active terminal, and it does not execute them under the context of a shell. Be sure to ensure your program is marked executable, if it is a shell script ensure it starts with an appropriate shebang (e.g. #!/bin/sh), and do not expect any standard output to appear on your terminal.
Então, basicamente, os problemas podem ser:
a) Você não está usando um shebang para o usb_autorun.sh e precisa adicionar #!/bin/bash
para autorun.sh e usb_autorun.sh
b) tente esta linha e use #! / bin / sh em ambos autorun.sh e usb_autorun.sh:
DIR=$( readlink -f "$( dirname "$0" )")
Nota: Esta solução é um pouco insegura (qualquer um pode rodar qualquer coisa no autorun.sh e executá-la), mas em uma base local eu acredito que ela é inofensiva. No entanto, eu usaria algum outro nome em vez de "autorun.sh", como "install_deb.sh" - apenas para evitar scripts de malware.