I disagree with @daniel-anderson. I don't think those solutions take arguments to the called program into account properly. Almost all executables treat path arguments as relative to the current directory, so even passing the arguments through is not going to work.
The only case in which a program will behave differently if it's called from a symlink
is if it examines the 0th argument. I know of no way to work around this using a symlink. The simplest work around is creating an intermediate shell script in the form of:
#!/bin/sh
/path/to/executable/that/needs/0th/argument/to/be/actual/path $@
Note that if for some bizarre reason you need to give it a 0th argument that is not actually where it is, you may use exec -a like so:
#!/bin/bash
(exec -a /path/to/executable/to/fool /path/to/fool/executable/with $@)
Note that the "-a" argument may not be strictly POSIX spec, so I used bash specifically. Assuming you have a ~/bin folder in your path, the first (normal) case can be quickly accomplished like so:
echo -e '#!/bin/sh\n/path/to/executable $@' > ~/bin/shortcut
chmod 755 ~/bin/shortcut
shortcut