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.

Zabba
fonte
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.

Jamal Fanaian
fonte
Ó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.

Paweł Nadolski
fonte
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.

vegatripy
fonte
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.

Usuário desconhecido
fonte
1

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

bash -c 'echo $BASH_VERSION'
sorin
fonte
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
Eyal Levin
fonte