I wrote a curses scheduling application for warehouse managers and essentially just set it as their login shell to a machine that only did timesheet stuff. No complaints and no problems for all the years it ran. Of course... they were already doing a lot of their work in a 5250 terminal emulator - and probably just assumed they were talking to an AS/400 instead of a headless disused Dell workstation. Don't get hung up on the shell thing, you only need to think about env variables, stdin/stdout, and maybe termcap/terminfo (depending on how fancy you want to get).