Die Weiterleitung von Ssh X11 ist mit der Standard-Shell fehlerhaft

541
kaligne

Ich habe einen bashbestimmten Code in meinem Bash-Profil:

$ 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 

Das < <(FUNCTION)ist eine bashspezifische Syntax, die nicht unterstützt wird sh. Wenn ich mich mit ssh an einem entfernten Rechner anmelde:

$ 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 

Es funktioniert gut. Jetzt möchte ich mich wieder einloggen, aber weiterleiten 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 

Ich habe keine Ahnung, was los ist, es scheint, als würde die X11-Weiterleitung irgendwie die shShell überlasten bash. Warum also, wie man das löst?

5

1 Antwort auf die Frage

0
sage

Wenn ich Inkonsistenzen zwischen -X- und -x-Logins sehe, vermute ich:

  1. Unterschiede zwischen .bash_profile / .profile und .bashrc - siehe ausgezeichnete Diskussion unter https://serverfault.com/a/261807/116193
  2. Interaktion meiner lokalen Umgebung mit der Remote - Ich debugiere dies, indem ich die Kontrolle der lokalen Umgebung, wie zum Beispiel mit, entferne env -i ssh ...

Außerdem: Im Allgemeinen benutze ich -x gerne, um viele dieser Arten von Dingen zu behandeln. Möglicherweise können Sie die Shell serverseitig so konfigurieren, dass die Ablaufverfolgung (-x) beim Anmelden aktiviert wird.

Wenn ich an andere denke, werde ich aktualisieren.