* L'option -t de ssh le force à créer un pseudo-terminal . Sinon, par defaut, quand on lui passe des commandes à executer, il n'établit pas ce pty (puisqu'elle ne sont pas interactives), et le bash croit alors qu'il est invoqué comme interpréteur de script et non pas comme shell interactif (et donc il n'y plus de completion, de prompt ou d'historique).
* "bash -i" explicite que c'est un shell interactif, mais ça marche sans l'option -i en fait. Sans le "-t" ça force au moins à mettre un prompt.
* le "exec" en fin de commande passée à ssh lui permet au final de n'avoir qu'un processus bash lancé à chaque instant (comme il execute en interne la commande passée dans un bash à lui, ça ferait sinon un bash dans un bash). Ça marche aussi bien sûr, mais ça fait plus propre.
# forcer le pty
Posté par daggett . En réponse au message Ouvrir une fenêtre sur un serveur distant en lançant une commande. Évalué à 6.
ssh -t me@myserver.com "/sbin/ifconfig;uname -p;cd ~/myDir/mysubDir; exec /bin/bash -i"
* L'option -t de ssh le force à créer un pseudo-terminal . Sinon, par defaut, quand on lui passe des commandes à executer, il n'établit pas ce pty (puisqu'elle ne sont pas interactives), et le bash croit alors qu'il est invoqué comme interpréteur de script et non pas comme shell interactif (et donc il n'y plus de completion, de prompt ou d'historique).
* "bash -i" explicite que c'est un shell interactif, mais ça marche sans l'option -i en fait. Sans le "-t" ça force au moins à mettre un prompt.
* le "exec" en fin de commande passée à ssh lui permet au final de n'avoir qu'un processus bash lancé à chaque instant (comme il execute en interne la commande passée dans un bash à lui, ça ferait sinon un bash dans un bash). Ça marche aussi bien sûr, mais ça fait plus propre.