Por que 'ssh user @ server mycommand' cria um shell interativo?

0
$ ssh t@localhost [[ $- == *i* ]] && echo 'Interactive' || echo 'Not interactive'
Interactive

Eu estava me perguntando por que o shell acima é interativo, já que ele possui argumentos não-opcionais e não tem -s ou -c ou -i .

Do manual do bash:

An interactive shell is one started without non-option arguments, unless -s is specified, without specifying the -c option, and whose input and error output are both connected to terminals (as determined by isatty(3)), or one started with the -i option.

Obrigado.

    
por Tim 06.04.2018 / 18:03

1 resposta

5

Você não está realizando o teste que acha que é. Sua expansão de $- está acontecendo antes que o comando ssh seja executado. Para demonstrar:

$ set -x
$ ssh home echo $-
+ ssh home echo himxBHs
himxBHs
$ ssh home 'echo $-'
+ ssh home 'echo $-'
hBc
    
por 06.04.2018 / 18:13

Tags