shell predeterminado para comandos remotos a través de ssh

shell predeterminado para comandos remotos a través de ssh

Tengo la siguiente configuración en mi caja ubuntu 10.04

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

Sin embargo, cuando ejecuto un comando remoto, zsh parece ser el shell predeterminado:

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

¿Cómo puedo solucionar esto?

Respuesta1

Lo que está viendo allí es el shell de inicio de sesión local.

ssh user@host "echo $SHELL"

Con lo anterior, $SHELLse expande antes de ejecutar ssh porque está entre comillas dobles. Entonces, en el extremo remoto estás ejecutando echo /bin/zshen lugar de echo $SHELL.

Utilice comillas simples para evitar $SHELLque se expandan localmente.

ssh user@host 'echo "$SHELL"'

VerBashPreguntas frecuentes 96para más información sobre esto.

Respuesta2

Usted u otra persona debe haber configurado su host remoto con zsh. Para volver al uso de bash:

chsh -s /bin/bash

en su host remoto.

Aunque, aparte, recomendaría zshque es un shell increíble con muchas características muy útiles, y tenerlo habilitado no te impide poder usar bash.

#!/bin/sh 

seguirá ejecutando sus scripts en bash.

Respuesta3

Lea sobre shells de inicio de sesión y sin inicio de sesión. Sospecho que estás haciendo algo divertido en ~/.bash_profile, ~/.bashrco ~/.profile, así que revisa su contenido para ver si hay algo que pueda hacer esto.

información relacionada