shell padrão para comandos remotos por meio do ssh

6

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 eu executo um comando remoto, o zsh parece ser o shell padrão:

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

Como corrijo isso?

    
por Raghuram 28.03.2012 / 06:52

3 respostas

6

O que você está vendo lá é o shell de login local.

ssh user@host "echo $SHELL"

Com o acima, $SHELL é expandido antes que o ssh seja executado porque está entre aspas duplas. Então, no extremo remoto, você está executando echo /bin/zsh em vez de echo $SHELL .

Use aspas simples para evitar que $SHELL seja expandido localmente.

ssh user@host 'echo "$SHELL"'

Veja BashFAQ 96 para saber mais sobre isso.

    
por geirha 24.07.2013 / 22:38
1

Você ou outra pessoa deve ter configurado seu host remoto com zsh . Para voltar ao uso do bash:

chsh -s /bin/bash

no seu host remoto.

Embora como um aparte eu recomendaria zsh é um shell incrível com muitos recursos muito úteis, e tê-lo ativado não o impede de ser capaz de usar o bash

#!/bin/sh 

ainda executará seus scripts no bash.

    
por Levi De Haan 28.03.2012 / 09:01
0

leia-se no login vs não-login shells. minha suspeita é que você está fazendo algo engraçado em ~/.bash_profile , ~/.bashrc ou ~/.profile , então verifique o conteúdo deles para algo que faria isso.

    
O
por nathwill 28.03.2012 / 07:49