dopisz opcję -d (--deamon) do inotifywait, wtedy pętla nie będzie potrzebna.
Uruchomienie w tle - najlepiej stwórz plik wykonywalny, np. w /usr/local/bin i wstaw go do /etc/rc.local, czyli tam musi być wpis:
/usr/local/bin/twoj_skrypt
oczywiście przed linią
exit 0
twoj_skrypt będzie wykonywany z uprawnieniami root-a. Można to obejść (jeśli trzeba) via su, wtedy wpis w /etc/rc.local będzie wyglądał tak:
su nazwa_uzytkownika -c /usr/local/bin/twoj_skrypt
ale środowisko użytkownika nie będzie odtworzone - trzeba je "ręcznie" ustawić w skrypcie.
wysyłanie pliku jako załącznika maila chyba nie jest tak proste, jak napisałeś, po to podałem ci dwa linki do skryptów perla. Rozumiem, że chcesz wysłać te pliki "gdzieś na zewnątrz" - serwerów SMTP typu "open relay" już nie ma - przed wysłaniem poczty musisz się do serwera SMTP zalogować.
basename i dirname nie działają tak, jak myślisz, np.:
PLIK=`basename /usr/local/bin/twoj_skrypt`
DIR=`dirname /usr/local/bin/twoj_skrypt`
w zamiennej PLIK masz twoj_skrypt
w zmiennej DIR masz /usr/local/bin
odwrócony cudzysłów wpisuje wynik komendy do zmiennej. Ważne:
nie #!/bin/sh tylko #!/bin/bash - w dystrybucjach opartych na debianie domyślnym shell-em jest dash, który działa trochę inaczej i jest uboższy (chociaż szybszy) od bash-a.
do usunięcia rozszerzenia z nazwy pliku użyłbym kombinacji basename (wycięcie nazwy pliku) + expr index $PLIK . + expr substr (też działa w odwóconym cudzysłowie), por. man expr i trochę ćwiczeń.