Either use an option to point it to the kernels or add a cd /path/to/cgminer before the line starting the binary.
Use a wrapper utility such as start-stop-daemon, suppress all output with 'really-quiet' flag.
Thanks, however the script already does that, it cd's to the cgminer dir and then ./ starts it with a config file argument, also located in the same directory. I suppose I'm asking in the wrong place, since I also have the same problem with a script that starts 4 instances of AMDOverdriveCtrl. The scripts both work fine when launched from an existing terminal (./script). It just doesn't work when I call the scripts from another script (or start-up script) or when I try to double-click it and select run in terminal. *sigh* Why is linux always such a b*tch, there ought to be a Steve Jobs for the linux community, to simplify these overly complicated, very basic tasks.

I don't know if I could use start-stop daemon, since I have to launch two instances of cgminer each with different parameters. Thanks for the heads-up though.