This program is to decide if it should run etc/interactive programs or etc/command programs. It should live in etc/front.end and be linked to names in bin that have programs/shell scripts in etc/interactive and etc/command of the same name: ln etc/front.end bin/window for etc/command/window and etc/interactive/window When user runs window, this executes etc/front.end but argv[0] will have the name "window", which front.end will use to build the two program names etc/interactive/window and etc/command/window.