У меня есть 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. Почему так, как это решить?