"Randall S. Becker" <rsbecker@xxxxxxxxxxxxx> writes: > The primary > problem is supplying -S $ZSSH0 on the command line causes $ZSSH0 > to be resolved as a shell variable. It is not. I think we've heard that one before, and the whole thing sounds like you are saying that a command line $ cmd $ZSSH0 expects ZSSH0 to be a variable and tries to interpolate its value before passing it to "cmd" while you want "cmd" to see a literal string that begins with a dollar sign. And the standard solution to that problem obviously is to tell the shell that the dollar-sign is not a reference to a variable by quoting, by using any variant of e.g. $ cmd \$ZSSH0 $ cmd '$ZSSH0' $ cmd "\$ZSSH0" As far as I can tell, the code in connect.c that spawns ssh via GIT_SSH_COMMAND uses the pretty vanilla run_command() interface, and that ought to be capable of producing such a command line, so I am lost as to where the need to have special case comes from. "cmd" here may be "ssh" but run_command() should not care what exact command is being invoked. I am puzzled why a simple quoting like the following cannot be adjusted for this particular case, for example: $ cat >>.git/config <<\EOF [alias] cmdtest0 = "!echo ..\\$ZSSH0.." cmdtest1 = "!echo ..$ZSSH0.." EOF $ ZSSH0=foo git cmdtest0 ..$ZSSH0.. $ ZSSH0=foo git cmdtest1 ..foo..