A execução de ssh foo@remote-server seguido por ./script.sh equivale à execução de ssh foo@remote-server ./script.sh e a execução de ssh foo@remote-server seguido por sudo -u bar ./script.sh é equivalente a ssh foo@remote-server sudo -u bar ./script.sh (exceto sudo pode falhar porque precisa de um TTY, que pode ser trabalhado facilmente). Por isso, receio que o que você está perguntando não faça sentido. Tudo o que você fizer para contornar essa diferença artificial, como testar a presença de $TERM ou [ -t 0 ] , provavelmente é facilmente contornado.