Você precisaria citar $2
de uma maneira adequada para o shell de login do usuário remoto. Por exemplo, supondo que seja como o Bourne:
shquote() {
LC_ALL=C awk -v q=\' '
BEGIN{
for (i=1; i<ARGC; i++) {
gsub(q, q "\" q q, ARGV[i])
printf "%s ", q ARGV[i] q
}
print ""
}' "$@"
}
my_func () {
ssh blah blah blah "$1" "cd -- $(shquote "$2")"
}
Por exemplo, shquote()
transformaria Stephane's dir
em 'Stephane'\''s dir'
, portanto, a linha de comando cd -- 'Stephane'\''s dir'
é interpretada pelo shell remoto tipo Bourne como executando cd
com um argumento de diretório Stephane's dir
.
Em qualquer caso, executar um shell em um host remoto que só faz cd
não vai conseguir nada útil.
Mais leituras (e mais opções, inclusive para os casos em que o shell de login do usuário remoto não é parecido com Bourne) em Como executar um comando simples arbitrário sobre o ssh sem conhecer o shell de login do usuário remoto?