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?
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.
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.
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.