While trying to set-up version control using Mercurial, I hit a snag trying to call hg commands over SSH to our OS X development server, that took up the better part of an afternoon. Having finally found the answer I'm recording it here in case I forget or to save anyone else similar suffering.
This is the what I was doing and the resulting error (note I'm using the default bash shell):
So, first of all find out where your hg command is located by running the following command while logged into the remote box:
That gives us the path to the hg command so now we need to see what paths are available when logging into that remote box via SSH. To do so run the following command from the machine you are trying to access the remote box from (my MacBook in this case):
We can see that the "/usr/local/bin/" path to hg is not in there so moving back to the remote box create and/or open ~/.bashrc and add the following line:
Now back to my MacBook and run the previous command again:
Great! Now we can see that "/usr/local/bin" is available and our original hg command now runs.
This is the what I was doing and the resulting error (note I'm using the default bash shell):
$ hg clone ssh://example@192.168.1.100/Sites/example-project
remote: bash: hg: command not found
abort: no suitable response from remote hg!
So, first of all find out where your hg command is located by running the following command while logged into the remote box:
$ which hg
/usr/local/bin/hg
That gives us the path to the hg command so now we need to see what paths are available when logging into that remote box via SSH. To do so run the following command from the machine you are trying to access the remote box from (my MacBook in this case):
$ ssh example@192.168.1.100 echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin
We can see that the "/usr/local/bin/" path to hg is not in there so moving back to the remote box create and/or open ~/.bashrc and add the following line:
export PATH="$PATH:/usr/local/bin"
Now back to my MacBook and run the previous command again:
$ ssh example@192.168.1.100 echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
Great! Now we can see that "/usr/local/bin" is available and our original hg command now runs.