shell padrão para comandos remotos através de ssh

shell padrão para comandos remotos através de ssh

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/zshem vez de echo $SHELL.

Use aspas simples para evitar $SHELLexpansã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 zshque 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.

informação relacionada