The home switches create a zero for the 'machine' coordinates but you could create one yourself.
If you positioned the machine where you think the home switches would be you could measure the X,Y positions using a vernier for example and call that zero. Now on subsequent days you just have to jog it into the same position and zero the axes, Z is just set to top of stock normally so that's repeatable. (just noticed 'routercnc' said the same thing)
I don't know about Linux but with Mach you can run it from a particular line in the G code but keep in mind that you may have to start the spindle manually because the line of code that starts it may not be present at your start position.