
Eu tenho a seguinte configuração na minha caixa do Ubuntu 10.04
~$ echo $SHELL
/bin/bash
~$ grep $USER /etc/passwd
ubuntu:x:1000:1000:Ubuntu,,,:/home/ubuntu:/bin/bash
No entanto, quando executo um comando remoto, zsh parece ser o shell padrão:
$> ssh -i /path/to/ssh/key ubuntu@<my-host> "echo $SHELL"
/bin/zsh
Como faço para corrigir isso?
Responder1
O que você está vendo é o shell de login local.
ssh user@host "echo $SHELL"
Com o acima, $SHELL
é expandido antes da execução do ssh porque está entre aspas duplas. Então, no lado remoto, você está executando echo /bin/zsh
em vez de echo $SHELL
.
Use aspas simples para evitar $SHELL
expansão local.
ssh user@host 'echo "$SHELL"'
VerBashFAQ 96para saber mais sobre isso.
Responder2
Você ou outra pessoa deve ter configurado seu host remoto com zsh
. Para voltar ao bash, use:
chsh -s /bin/bash
em seu host remoto.
Embora, à parte, eu recomende zsh
que seja um shell incrível com muitos recursos muito úteis, e tê-lo ativado não impede que você possa usar o bash
#!/bin/sh
ainda executará seus scripts no bash.
Responder3
leia sobre shells de login versus shells sem login. minha suspeita é que você está fazendo algo engraçado em ~/.bash_profile
, ~/.bashrc
, ou ~/.profile
, então verifique o conteúdo deles em busca de algo que faça isso.