Я использую bash или sh? [Дубликат]

У этого вопроса уже есть ответ здесь: Как проверить, какую оболочку я использую? 5 ответов

Я подключен к удаленной оболочке, и многие клавиши работают неправильно, такие как стрелки и escape-ключ. Этот ответ клавиши со стрелками, вкладка не работает, предположил, что я могу оказаться в неправильной оболочке, поэтому я ссылался на Как определить текущую оболочку, над которой я работаю ?. Используя описанные методы, я получаю странные результаты.

echo $SHELL 
/bin/bash

, но

echo $0
sh

Какую оболочку я использую?

1
задан 23 May 2017 в 15:39

4 ответа

Вы используете sh. Поскольку $SHELL ссылается на оболочку входа, а не на используемый в настоящее время.

В вашей связанной ссылке с вопросом StackOverflow есть правильный метод для правильного определения текущей запущенной оболочки.

10
ответ дан 23 May 2018 в 06:02
  • 1
    Этот вопрос о том, на что ссылается ОП в своем вопросе. :) – edwinksl 17 September 2016 в 23:28
  • 2
    Правильно. Однако, перечитывая это, я вижу, где я пропустил нюансы предоставленного ответа, так что теперь это имеет смысл. – Info5ek 17 September 2016 в 23:29
  • 3
    Это правильный метод. Я не заметил ссылку – Anwar 17 September 2016 в 23:30
  • 4
    Моя интерпретация echo $0 - это канонический способ сделать это. Это верно? – edwinksl 17 September 2016 в 23:35
  • 5
    @edwinksl, который, кажется, самый популярный метод. – Anwar 17 September 2016 в 23:36

Если удаленная ОС - Ubuntu (или другой дистрибутив на основе GNU / Linux), очень простой способ выяснить, какая ваша оболочка вы используете, выполните следующую команду:

ls -l /proc/$$/exe

, если удаленный OS - это не Ubuntu или, по крайней мере, аналогичный дистрибутив GNU / Linux, который вы задали на неправильном сайте.

Если по какой-либо причине удаленная ОС отсутствует /proc (например, запущена разделенная, неполная или антивирусная версия Ubuntu или, может быть, контейнерный экземпляр ОС) вышеупомянутая команда не будет работать.

Глядя на $0, вы получите ключ, это не на 100% надежнее. Любая программа может подделать свое имя на что-то другое. В любом случае очень маловероятно, что вы действительно запускаете sh (реальную оболочку Bourne), поскольку он почти никогда не устанавливается в Linux, возможно, вы используете клон sh, вероятно dash.

4
ответ дан 23 May 2018 в 06:02

вы, похоже, используете sh. Чтобы переключиться на bash, вы можете просто ввести «bash»

2
ответ дан 23 May 2018 в 06:02

Есть много замечательных ответов, но вы также можете попробовать опубликовать echo $BASH_VERSION. Если это печатает номер версии, вы находитесь в bash. Если он выводит пустую строку, вы находитесь внутри какой-либо другой оболочки.

1
ответ дан 23 May 2018 в 06:02

Другие вопросы по тегам:

Похожие вопросы: