Como encontro a versão do bash que estou executando?


161

(learning bash) Eu estava tentando verificar a versão do bash e digitei /bin/bash -v.

Isso produziu muito texto na tela (conteúdo de .bashrc e outros arquivos originados nela).

Eu poderia ter estragado algo (como sobrescrever alguns arquivos de configuração / definir variáveis ​​de ambiente incorretas etc.) devido a esse comando?

Também não consigo encontrar documentação sobre a -vfinalidade do switch.


Se você executou, bash -vinvocou um novo shell bash com o modo detalhado ativado, portanto, você verá a saída detalhada para outros comandos (no mínimo, você verá printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"). Para finalizar a verbosidade, digite exitcommand - você voltará ao shell bash não detalhado original (ou a qualquer shell em que estivesse).
ADTC

Respostas:


165

O -vparâmetro bash significa verbose e instrui o bash a imprimir o máximo de informações possível sobre o que está fazendo. Na inicialização, ele imprimirá toda a configuração em que está lendo.

Para imprimir as informações da versão do bash, use bash --version.


Ótimo! Eu também encontrei a lista de opções para o bash .
Zabba

33
Como alternativa, se você já estiver executando um shell bash, poderá gerar o conteúdo da variável especial BASH_VERSION. echo "$BASH_VERSION". Há também uma matriz especial (BASH_VERSINFO) que contém cada número de versão em elementos separados. if ((BASH_VERSINFO[0] < 4)); then echo "Sorry, you need at least bash-4.0 to run this script." >&2; exit 1; fi
Geirha #

2
erro de digitação, deve ser algo como [ "${BASH_VERSINFO}" -lt 4 ]ou[ "${BASH_VERSINFO[0]}" -lt 4 ]
bufh

Muito detalhado, muito mais fácil com askubuntu.com/a/899187/1004
Sorin

O problema com esse método é que você não pode ter 100% de certeza de que qualquer script, link simbólico ou qualquer outro tipo de configuração que altere qualquer variável de ambiente no login. Como respondi abaixo, Ctrl + x Ctrl + v mostra exatamente a versão do bash que você está executando no momento, independentemente de qualquer variável de ambiente.
vegatripy

98

Ao executar o bash (por exemplo, de gnome-terminal), você pode verificar o valor da BASH_VERSIONvariável de ambiente.

$ echo $BASH_VERSION
4.2.37(1)-release

Se o valor estiver vazio, você não está executando bash.


11
Isso é melhor do que apenas executar bash --version, porque confirma que você está executando o bash no momento, não apenas que o bash está instalado no sistema.
Flimm

1
O +1 bash --versionnão mostra o bash que você está usando no momento.
gabeio

Cuidado: Um conjunto BASH_VERSIONnão garante que você está executando bash: export BASH_VERSION; csh -c 'echo $BASH_VERSION $SHELL $shell', então $BASH_VERSIONpode ser definido no cshbem
Tino

@ Tino, você pode fazer um $SHELL --version, mas novamente o SHELL pode ser substituído (e todo o shell não suporta o sinalizador --version).
bufh

37

Há um atalho de chave que instrui as informações atuais do shell a serem exibidas:

Ctrl+ x Ctrl+v

De man bash

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

Essa é a melhor opção se você mexeu com variáveis ​​de ambiente.


8

Não, está tudo bem. De man bash:

   --verbose
          Equivalent to  -v.

Não é tão silencioso como sempre. Experimentar

--version 

em vez de.


1

O habitual --versionpode fornecer muito clichê de várias linhas, então o que estou usando é

bash -c 'echo $BASH_VERSION'

Duplicar de Pawel resposta
wjandrea

4
@wjandrea Isso é diferente da resposta de Paweł Nadolski . Ele executa o comando em um novo bashshell. Uma maneira de isso ser útil é que ele não precisa que o shell esteja sendo usado atualmente bash. Outra é que, mesmo em bash, é possível (embora não seja bom ) definir BASH_VERSIONum valor diferente. Pode até ser exportado como uma variável de ambiente. No entanto, mesmo após a execução export BASH_VERSION=foobar, o método fornecido aqui funciona, pois o novo bashshell é redefinido BASH_VERSIONautomaticamente antes de executar a expansão de parâmetros que o lê.
Eliah Kagan 28/09

O @EliahKagan, no meu sistema LTS 16.04 instalado e atualizado, instalado a partir do arquivo iso 16.04.1, bash --versiondiz 4.3.48(1)-releasee apt-cache policy bashdiz 4.3-14ubuntu1.2e verifiquei se o basharquivo executável vem do pacote 'bash'. Como isso deve ser interpretado? Existe uma incompatibilidade semelhante para usb-creator-gtke, nesse caso, a saída do apt-cache está correta. - Podemos concluir que o número da versão superior é o correto (e alguém esqueceu de atualizar o outro)?
sudodus

1
@sudodus O número da versão de um programa pode ser diferente do número da versão do pacote APT em que ele se encontra. É o que você está vendo aqui. 4.3.48...é a versão do Bash, 4.3-14...é a versão do bashpacote.
wjandrea

@EliahKagan eu esqueci de mencionar antes, obrigado por me corrigir! Eu aprecio o conhecimento.
wjandrea

0

Para obter apenas a versão e não o texto de múltiplas linhas:

$ bash --version | head -1 | cut -d ' ' -f 4
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.