Below is a directory listing of /usr/local/bin. You could find that most of the programs nowaday like crossover, quake and etc place a symbolic link in /usr/local/bin only while keeping the data files within the same folder with their "exe" programs.
Therefore, GetExeDirFile would be a good idea even in linux and is not against current linux conventions.
Well, then the only problem is implementation - that really is quite complex in Linux AFAIK (I am afraid you have to duplicate the PATH searching process and follow that link....)