
У меня на 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 ubuntu@<my-host> "echo $SHELL"
/bin/zsh
Как это исправить?
решение1
То, что вы видите здесь, — это локальная оболочка входа.
ssh user@host "echo $SHELL"
С вышеизложенным, $SHELL
раскрывается до запуска ssh, поскольку он заключен в двойные кавычки. Так что на удаленном конце вы запускаете echo /bin/zsh
вместо echo $SHELL
.
Используйте одинарные кавычки, чтобы избежать $SHELL
локального расширения.
ssh user@host 'echo "$SHELL"'
ВидетьБашFAQ 96для получения более подробной информации об этом.
решение2
Вы или кто-то другой должен был настроить свой удаленный хост с помощью zsh
. Чтобы переключиться обратно на bash, используйте:
chsh -s /bin/bash
на вашем удаленном хосте.
Хотя, в качестве отступления, я бы рекомендовал, zsh
что это потрясающая оболочка с множеством очень полезных функций, и ее включение не помешает вам использовать bash.
#!/bin/sh
по-прежнему будет запускать ваши скрипты под bash.
решение3
почитайте об оболочках входа и выхода из системы. Я подозреваю, что вы делаете что-то странное в ~/.bash_profile
, ~/.bashrc
, или ~/.profile
, поэтому проверьте их содержимое на предмет чего-то, что могло бы это сделать.