Я подключен к удаленной оболочке, и многие клавиши работают неправильно, такие как стрелки и escape-ключ. Этот ответ клавиши со стрелками, вкладка не работает, предположил, что я могу оказаться в неправильной оболочке, поэтому я ссылался на Как определить текущую оболочку, над которой я работаю ?. Используя описанные методы, я получаю странные результаты.
echo $SHELL
/bin/bash
, но
echo $0
sh
Какую оболочку я использую?
Вы используете sh. Поскольку $SHELL ссылается на оболочку входа, а не на используемый в настоящее время.
В вашей связанной ссылке с вопросом StackOverflow есть правильный метод для правильного определения текущей запущенной оболочки.
Если удаленная ОС - Ubuntu (или другой дистрибутив на основе GNU / Linux), очень простой способ выяснить, какая ваша оболочка вы используете, выполните следующую команду:
ls -l /proc/$$/exe
, если удаленный OS - это не Ubuntu или, по крайней мере, аналогичный дистрибутив GNU / Linux, который вы задали на неправильном сайте.
Если по какой-либо причине удаленная ОС отсутствует /proc (например, запущена разделенная, неполная или антивирусная версия Ubuntu или, может быть, контейнерный экземпляр ОС) вышеупомянутая команда не будет работать.
Глядя на $0, вы получите ключ, это не на 100% надежнее. Любая программа может подделать свое имя на что-то другое. В любом случае очень маловероятно, что вы действительно запускаете sh (реальную оболочку Bourne), поскольку он почти никогда не устанавливается в Linux, возможно, вы используете клон sh, вероятно dash.
вы, похоже, используете sh. Чтобы переключиться на bash, вы можете просто ввести «bash»
Есть много замечательных ответов, но вы также можете попробовать опубликовать echo $BASH_VERSION. Если это печатает номер версии, вы находитесь в bash. Если он выводит пустую строку, вы находитесь внутри какой-либо другой оболочки.