Question Ssh X11 transfert avec le shell par défaut


j'ai un bash code spécifique dans mon profil bash:

$ cat ~/.bash_profile
#!/usr/bin/env bash

echo "SHELL: $SHELL"
function printfiles() {
  while IFS='' read -r _file || [[ -n "$_file" ]]; do
    echo "file: ${_file}"
  done < <(ls)
} && export -f printfiles

le < <(FUNCTION) est bash syntaxe spécifique, non prise en charge par sh. Lorsque je me connecte à une machine distante avec 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

Ça fonctionne bien. Maintenant, je veux me connecter à nouveau mais transférer mon 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

Je n'ai aucune idée de ce qui se passe, il semble que lorsque je fais la transmission X11 en quelque sorte le sh shell est utilisé sur bash. Pourquoi alors, comment résoudre cela?


5
2017-11-17 10:37


origine




Réponses:


Si je vois des incohérences entre les connexions -X et -x, je soupçonne:

  1. Différences entre .bash_profile / .profile et .bashrc - voir une excellente discussion à https://serverfault.com/a/261807/116193
  2. Interaction de mon environnement local avec la télécommande - Je corrige cela en éliminant le contrôle de l’environnement local, comme avec env -i ssh ...

Aussi: généralement, j'aime utiliser -x pour dépanner beaucoup de ces types de choses. Vous pourrez peut-être configurer le shell côté serveur pour activer la trace (-x) lors de la connexion.

Si je pense aux autres, je vais mettre à jour.


0
2017-12-27 17:43