Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm using rsync to sync up files between two computers. On one machine, my default shell is set to fish, which breaks rsync ("protocol version mismatch -- is your shell clean?").

Is there a way to tell rsync to use /bin/sh instead of the default login shell?

share|improve this question
Remote ssh commands always go through the login shell -c thecommand; this cannot be bypassed. – grawity Nov 22 '13 at 21:27
up vote 1 down vote accepted

I see this in my rsync man page:


rsync occasionally produces error messages that may seem a little cryptic. The one that seems to cause the most confusion is "protocol version mismatch -- is your shell clean?".

This message is usually caused by your startup scripts or remote shell facility producing unwanted garbage on the stream that rsync is using for its transport. The way to diagnose this problem is to run your remote shell like this:

ssh remotehost /bin/true > out.dat

then look at out.dat. If everything is working correctly then out.dat should be a zero length file. If you are getting the above error from rsync then you will probably find that out.dat contains some text or data. Look at the contents and try to work out what is producing it. The most common cause is incorrectly configured shell startup scripts (such as .cshrc or .profile) that contain output statements for non-interactive logins.

share|improve this answer
Thanks, that seems to be it. I stopped it from outputing things on login and it works fine. – Drew DeVault Nov 23 '13 at 23:44

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .