Why are you only reading the button status once?
Okay, for the record,
here is the thread about all things button-related. Someone should really sticky that thread, I keep referring people to it.
The short answer is, every time the button status is checked, the buffer is then reset to "ff". The ContentLister checks button status 10 times per second. So if your program runs its one single button check just after the ContentLister, it's possible that it won't see it.
It also depends on how you're pressing the button. Are you holding it down? For how long? At what point during boot do you start pressing it? When does your program run (i.e. what does your start.sh script look like)?