Это правда, что, как говорили другие, у PTY есть определенные накладные расходы, но главная причина отказа от использования PTY при выполнении удаленной команды заключается в том, что вы теряете информацию.
Обычно, когда вы запускаете команду удаленно через ssh, потоки команды stdout
и stderr
отправляются на локальный stdout
и stderr
, что означает, что вы можете перенаправлять / перенаправлять их по отдельности - например:
$ ssh server ls foo bar
ls: cannot access bar: No such file or directory
foo
$ ssh server ls foo bar > stdout 2> stderr
$ cat stdout
foo
$ cat stderr
ls: cannot access bar: No such file or directory
Но если вы используете PTY, весь вывод идет на stdout
, потому что у PTY нет отдельных потоков для вывода / ошибки :
$ ssh -t server ls foo bar > stdout 2> stderr
$ cat stdout
ls: cannot access bar: No such file or directory
foo
$ cat stderr
$
Я не думаю, что ls -l
даст вам какую-либо информацию о пользователе Jim
, так как даст только информацию о файловой системе. Попробуйте
groups Jim
вместо этого.