How to run Dolphin instead of Nautilus?

There are several caveats in what you tried to do. I already mentioned the danger introduced by your approach:

Next time nautilus is going to be updated, your dolphin gets overwritten (as your link points there). Same goes for gnome-terminal.

So we figured, this was not a good idea :)

But there are some ways to try working around, so "x" gets run when "z" was requested -- but I'm not aware of any as soon not "z", but "/full/path/to/z" gets called. As long as it is just "z":

  • creating an alias for z, like alias z=x (works on a per-user-level -- or globally, depending on where it was defined)
  • creating a "replacement" for z in a location mentioned in the PATH before the location the real z resides in

A little more details on the second approach. Taking your original problem, you want to have dolphin executed whenever nautilus is called upon. You already found nautilus at /usr/bin/nautilus. Now let's (probably correctly) assume your $PATH contains (in this order) /usr/local/bin:/usr/bin -- so you see /usr/local/bin would be searched before /usr/bin. So we simply create a shell script /usr/local/bin/nautilus with the following content:

#!/bin/bash
/usr/bin/dolphin %$@

So what will happen? If you (or some script/program/daemon/...) invokes nautilus, this will execute /usr/local/bin/nautilus (as this is the first "nautilus" found in the PATH), which simply starts /usr/bin/dolphin -- voila! But if the "whatever" uses the full path, this won't work.

So you say: Hey, why didn't Izzy say "just do a ln -s /usr/bin/dolphin /usr/local/bin/nautilus?" Sure you can do that -- and it will work the same. But using a script as shown may come in handy if you need to introduce additional parameters which are not passed with the original call. With above script, dolphin simply gets passed the same parameters the original call used (%$@). But you can play around with things in the script, replace parameters, etc. As for your current problem, the link would be enough (as long as nautilus doesn't get called with the full path).