Here's a `fish 2` shell version, that works on the Mac.
You can add it as `~/.config/fish/functions/mark.fish`:
set MARKPATH $HOME/.marks
function jump
cd $MARKPATH/$argv; or echo "No such mark: $argv"
end
function mark
mkdir -p $MARKPATH; and ln -s (pwd) $MARKPATH/$argv
end
function unmark
rm -i $MARKPATH/$argv
end
function marks
ls -l $MARKPATH | cut -d' ' -f12-; and echo
end