Вопрос Как найти версию bash, которую я запускаю?


(обучение bash) Я пытался проверить версию bash, поэтому я набрал /bin/bash -v,

Это выводило на экран много текста (содержимое .bashrc и других файлов, полученных из него).

Могу ли я что-нибудь придумать (например, перезаписать некоторые файлы конфигурации / установить неверные переменные среды и т. Д.) Из-за этой команды?

Я также не могу найти документацию о том, что -v переключатель для.


143
2018-05-02 17:07


происхождения


Если вы побежали bash -v вы вызывали новую оболочку bash с активированным расширенным режимом, поэтому вы увидите подробный вывод для дальнейших команд (как минимум, вы увидите printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"). Чтобы закончить многословие, введите exit команда - вы вернетесь в исходную неосвещенную оболочку bash (или какую бы оболочку вы не были). - ADTC


ответы:


-v Параметр для bash означает многословность и дает указание bash распечатать как можно больше информации о том, что он делает. При запуске он распечатает всю конфигурацию, в которой он читает.

Чтобы распечатать информацию о версии для bash, используйте bash --version,


140
2018-05-02 17:11



Большой! Я также нашел список переключателей для bash, - Zabba
Кроме того, если вы уже используете оболочку bash, вы можете выводить содержимое специальной переменной BASH_VERSION. echo "$BASH_VERSION", Существует также специальный массив (BASH_VERSINFO), содержащий каждый номер версии в отдельных элементах. if ((BASH_VERSINFO[0] < 4)); then echo "Sorry, you need at least bash-4.0 to run this script." >&2; exit 1; fi - geirha
опечатка должна быть чем-то вроде [ "${BASH_VERSINFO}" -lt 4 ] или [ "${BASH_VERSINFO[0]}" -lt 4 ] - bufh
Слишком многословно, намного проще с askubuntu.com/a/899187/1004 - sorin
Проблема с этим методом заключается в том, что вы не можете быть на 100% уверены, что любой скрипт, символическая ссылка или любая другая конфигурация беспорядка, которая изменила любую переменную среды при входе в систему. Как я уже сказал ниже, Ctrl + x Ctrl + v покажет вам именно версию bash, которую вы сейчас используете, вне зависимости от какой-либо переменной среды. - vegatripy


При запуске bash (например, из gnome-terminal) вы можете проверить значение BASH_VERSION переменная среды.

$ echo $BASH_VERSION
4.2.37(1)-release

Если значение пустое, вы не работаете bash,


83
2018-04-11 09:21



Это лучше, чем просто запуск bash --version, потому что он подтверждает, что вы в настоящее время используете bash, а не только, что у вас установлен bash в вашей системе. - Flimm
+1 bash --version не показывает bash, который вы используете в настоящее время. - gabeio
Остерегайтесь: набор BASH_VERSION не гарантирует, что вы работаете bash: export BASH_VERSION; csh -c 'echo $BASH_VERSION $SHELL $shell', так $BASH_VERSION могут быть установлены в csh также - Tino
@ Тинь хорошо, вы могли бы сделать $SHELL --version, но снова SHELL может быть перезаписан (и вся оболочка не поддерживает флаг -version). - bufh


Существует ключевой ярлык, который указывает текущую информацию о оболочке:

Ctrl+Икс  Ctrl+v

Из man bash

   display-shell-version (C-x C-v)
          Display version information about the current instance of bash.

Это лучший выбор, если вы столкнулись с переменными среды.


31
2018-04-10 08:32





Нет, все в порядке. Из man bash:

   --verbose
          Equivalent to  -v.

Это просто не так тихо, как обычно. Пытаться

--version 

вместо.


8
2018-05-02 17:14





Обычно --version может дать вам слишком много многострочного шаблона, так что я использую

bash -c 'echo $BASH_VERSION'

1
2018-04-01 14:29



Дубликат Ответ Павела - wjandrea
@wjandrea Это отличается от Ответ Павела Надольского, Он запускает команду в новой bash оболочка. Один из способов это полезно, так это то, что он не нуждается в оболочке, которая в настоящее время используется bash, Другое дело, что даже в bash, возможно (хотя и не хорошо) устанавливать BASH_VERSION на другое значение. Он может даже экспортироваться как переменная среды. Но даже после запуска export BASH_VERSION=foobar, приведенный здесь метод работает, поскольку новый bash оболочка сбрасывает свои собственные BASH_VERSION автоматически перед выполнением расширения параметра, которое его читает. - Eliah Kagan
@EliahKagan Хорошая точка, спасибо! - wjandrea
@EliahKagan, в моей обновленной и обновленной установленной системе 16.04 LTS, установленной из файла iso 16.04.1, bash --version говорит 4.3.48(1)-release а также apt-cache policy bashговорит 4.3-14ubuntu1.2 и я проверил, что исполняемый файл bash файл поступает из пакета bash. Как это следует интерпретировать? Аналогичное несоответствие usb-creator-gtk, и в этом случае вывод apt-cache корректен. - Можем ли мы заключить, что номер более высокой версии является правильным (и кто-то забыл обновить другой)? - sudodus


Чтобы получить версию, а не многострочный текст:

$ bash --version | head -1 | cut -d ' ' -f 4

0
2018-02-21 15:11