Пересылка Ssh X11 испорчена оболочкой по умолчанию

480
kaligne

У меня есть bashопределенный код в моем профиле Bash:

$ cat ~/.bash_profile #!/usr/bin/env bash  echo "SHELL: $SHELL" function printfiles() { while IFS='' read -r _file || [[ -n "$_file" ]]; do echo "file: $" done < <(ls) } && export -f printfiles 

< <(FUNCTION)Является bashконкретным синтаксисом, не подкрепленным sh. Когда я захожу на удаленную машину с помощью ssh:

$ ssh my.remote me@xxx.xx.xxx.xx's password:  Last login: Fri Nov 17 11:27:39 2017 from yyy.yy.yy.yy sourcing /home/me/.bash_profile SHELL: /bin/bash 

Работает нормально. Теперь я хочу снова войти в систему, но переадресация X11:

$ ssh -X my.remote me@xxx.xx.xxx.xx's password:  sh: printfiles: line 2: syntax error near unexpected token `<' sh: printfiles: line 2: ` done < <(ls)' sh: error importing function definition for `printfiles' sh: printfiles: line 2: syntax error near unexpected token `<' sh: printfiles: line 2: ` done < <(ls)' sh: error importing function definition for `printfiles' sh: printfiles: line 2: syntax error near unexpected token `<' sh: printfiles: line 2: ` done < <(ls)' sh: error importing function definition for `printfiles' sh: printfiles: line 2: syntax error near unexpected token `<' sh: printfiles: line 2: ` done < <(ls)' sh: error importing function definition for `printfiles' Last login: Fri Nov 17 11:28:51 2017 from yyy.yy.yy.yy sourcing /home/me/.bash_profile SHELL: /bin/bash 

Я понятия не имею, что происходит, кажется, что когда я делаю пересылку X11, shоболочка как-то используется bash. Почему так, как это решить?

5

1 ответ на вопрос

0
sage

Если я вижу несоответствия между именами -X и -x, я подозреваю:

  1. Различия между .bash_profile / .profile и .bashrc - смотрите отличную дискуссию на https://serverfault.com/a/261807/116193
  2. Взаимодействие моей локальной среды с удаленным - я отлаживаю это, удаляя контроль над локальной средой, такой как с env -i ssh ...

Кроме того: в общем, я люблю использовать -x для устранения многих подобных проблем. Возможно, вы сможете настроить оболочку на стороне сервера, чтобы включить трассировку (-x) при входе в систему.

Если я подумаю о других, я обновлю.