Насколько я понимаю, после запуска «nohup leafpad» надо немного подождать, иначе скрипт закончит работу раньше, чем запустится nohup. И тогда вместе со скриптом улетит в небытие и nohup, и ещё не родившийся leafpad. Я думаю, именно в этом природа такого поведения. Поможет ли sleep во всех случаях — непонятно. Правильно делать так:
1) Запускаем nohup <процесс> &
2) <процесс> отправляет сигнал о том, что всё OK.
3) <процесс> запускает leafpad
4) Вместо sleep 1 стоит <выключатель> и ждет сигнал.
5) Получив сигнал, <выключатель> заканчивает работу и дальше идет
;;
*)
gnome-terminal -x "$0" "$1" "command-line-mode"
;;
esac
Кажется, что по сравнению с первым вариантом — сплошные костыли, но в этом случае автор может не опасаться, программа должна быть предсказуемой, разве что я что-то неправильно понял.