web-dev-qa-db-fra.com

Shell par défaut pour les commandes à distance via ssh

J'ai la configuration suivante sur ma boîte Ubuntu 10.04

~$ echo $Shell
/bin/bash
~$ grep $USER /etc/passwd
ubuntu:x:1000:1000:Ubuntu,,,:/home/ubuntu:/bin/bash

Cependant, lorsque j'exécute une commande à distance, zsh semble être le shell par défaut:

$> ssh -i /path/to/ssh/key ubuntu@<my-Host> "echo $Shell"
/bin/zsh

Comment puis-je réparer ça?

7
Raghuram

Ce que vous voyez ici est le shell de connexion local.

ssh user@Host "echo $Shell"

Avec ce qui précède, $Shell est développé avant l'exécution de ssh car il est placé entre guillemets. Donc, du côté distant, vous exécutez echo /bin/zsh au lieu de echo $Shell.

Utilisez des guillemets simples pour éviter que $Shell ne soit développé localement.

ssh user@Host 'echo "$Shell"'

Voir BashFAQ 96 pour plus d'informations.

8
geirha

Vous ou une autre personne devez avoir configuré votre hôte distant avec zsh. Pour revenir à bash, utilisez:

chsh -s /bin/bash

sur votre hôte distant.

Bien que, de côté, je recommande zsh c'est un super Shell avec beaucoup de fonctionnalités très utiles, et son activation ne vous empêche pas d'utiliser bash

#!/bin/sh 

continuera à exécuter vos scripts sous bash.

1
Levi De Haan

lire sur les login avec les shells non-login. je soupçonne que vous faites quelque chose de drôle dans ~/.bash_profile, ~/.bashrc ou ~/.profile, alors vérifiez leur contenu pour trouver quelque chose qui ferait cela.

0
nathwill