стандартная оболочка для удаленных команд через ssh

6

У меня есть следующая настройка в моем ящике ubuntu 10.04

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

Однако, когда я запускаю удаленную команду, zsh кажется оболочкой по умолчанию:

$> ssh -i /path/to/ssh/key [email protected]<my-host> "echo $SHELL"
/bin/zsh

Как это исправить?

    
задан Raghuram 28.03.2012 в 06:52
источник

3 ответа

6

Что вы видите, есть локальная оболочка входа.

ssh [email protected] "echo $SHELL"

С вышесказанным, $SHELL расширяется до запуска ssh, поскольку он заключен в двойные кавычки. Итак, на удаленном конце вы используете echo /bin/zsh вместо echo $SHELL .

Используйте одинарные кавычки, чтобы избежать расширения $SHELL .

ssh [email protected] 'echo "$SHELL"'

Подробнее об этом см. BashFAQ 96 .

    
ответ дан geirha 24.07.2013 в 22:38
1

Вы или кто-то еще должен был настроить ваш удаленный хост с zsh . Чтобы вернуться к использованию bash:

chsh -s /bin/bash

на удаленном хосте.

Хотя в стороне я бы рекомендовал zsh , это потрясающая оболочка с множеством очень полезных функций, и включение ее не останавливает вас от возможности использования bash

#!/bin/sh 

все равно будут запускать ваши скрипты под bash.

    
ответ дан Levi De Haan 28.03.2012 в 09:01
0

читать при входе в систему без участия входа в систему. мое подозрение в том, что вы делаете что-то смешное в ~/.bash_profile , ~/.bashrc или ~/.profile , поэтому проверьте их содержимое для чего-то, что сделало бы это.

    
ответ дан nathwill 28.03.2012 в 07:49