Bugfix: Don't link default -> default (oops!), generate link even if the target script returns a nonzero exit code, and only make a new link if the old one points somewhere else or doesn't exist