A string inteira "cd /home/ubuntu/Desktop;
var=/home/ubuntu/Desktop/abcd; mkdir $var; cd $var; pwd"
é expandida
lado do cliente, antes de ser enviado para o host remoto. No cliente
ambiente, var
não está definido, fazendo com que $var
se expanda para o espaço vazio
string e, por sua vez, fazendo com que os comandos executados no host remoto sejam
mkdir
e cd
, sem parâmetro.
Uma correção simples é citar a sua cadeia de caracteres, forçando a expansão para acontecer no host remoto:
ssh "$1" 'cd /home/ubuntu/Desktop; var=/home/ubuntu/Desktop/abcd; mkdir $var; cd $var; pwd'
Se, no seu caso de uso real, partes da string precisarem ser expandidas lado do cliente, você pode usar aspas duplas e proteger apenas aqueles variáveis que devem ser expandidas remotamente:
ssh "$1" "cd /home/ubuntu/Desktop; var=/home/ubuntu/Desktop/abcd; mkdir \$var; cd \$var; pwd"
Existem outras maneiras de fazer isso; um dos vários estilos de heredocs provavelmente será adequado também.