Comment trouver la version de bash que je cours?

161

(apprendre bash) J'essayais de vérifier la version bash, alors j'ai tapé /bin/bash -v.

Cela a généré beaucoup de texte à l’écran (contenu de .bashrc et d’autres fichiers qui en provenaient).

Aurais-je pu foirer quelque chose (comme écraser des fichiers de configuration / définir des variables d'environnement incorrectes, etc.) avec cette commande?

Je ne trouve pas non plus de documentation sur l’utilisation du -vcommutateur.

Zabba
la source
Si vous avez exécuté, bash -vvous avez invoqué un nouveau shell bash avec le mode commenté activé. Vous verrez ainsi une sortie détaillée pour les commandes suivantes (au minimum, vous verrez printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"). Pour mettre fin à la verbosité, tapez exitcommande - vous serez de retour dans le shell bash original non-verbose (ou quel que soit le shell dans lequel vous étiez).
ADTC

Réponses:

165

Le -vparamètre pour bash signifie verbose et indique à bash d'imprimer autant d'informations que possible sur ce qu'il fait. Au démarrage, il imprimera toute la configuration qu'il lit.

Pour imprimer les informations de version pour bash, utilisez bash --version.

Jamal Fanaian
la source
Génial! J'ai aussi trouvé la liste des commutateurs pour bash .
Zabba
33
Si vous utilisez déjà un shell bash, vous pouvez également générer le contenu de la variable spéciale BASH_VERSION. echo "$BASH_VERSION". Il existe également un tableau spécial (BASH_VERSINFO) contenant chaque numéro de version dans des éléments distincts. 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
faute de frappe, devrait être quelque chose comme [ "${BASH_VERSINFO}" -lt 4 ]ou[ "${BASH_VERSINFO[0]}" -lt 4 ]
bufh
Trop verbeux, beaucoup plus facile avec askubuntu.com/a/899187/1004
sorin
Le problème avec cette méthode est que vous ne pouvez pas être sûr à 100% que tout script, lien symbolique, ou tout autre type de configuration compliquée, ayant modifié une variable d'environnement lors de la connexion. Comme j'ai répondu ci-dessous, Ctrl + x Ctrl + v vous montrera exactement la version de bash que vous utilisez actuellement, quelle que soit la variable d'environnement.
vegatripy
98

Lors de l'exécution de bash (par exemple from gnome-terminal), vous pouvez vérifier la valeur de BASH_VERSIONla variable d'environnement.

$ echo $BASH_VERSION
4.2.37(1)-release

Si la valeur est vide, vous n'êtes pas en cours d'exécution bash.

Paweł Nadolski
la source
11
C'est mieux que de simplement exécuter bash --version, car cela confirme que vous utilisez actuellement bash, et pas seulement que bash est installé sur votre système.
Flimm
1
+1 bash --versionne montre pas le bash que vous utilisez actuellement.
Gabeio
Attention: Un ensemble BASH_VERSIONne garantit pas que vous utilisez bash: export BASH_VERSION; csh -c 'echo $BASH_VERSION $SHELL $shell', donc $BASH_VERSIONpeut être réglée cshaussi bien
Tino
@Tino, eh bien, vous pouvez en faire un $SHELL --version, mais encore une fois, SHELL peut être écrasé (et tous les shell ne supportent pas l'indicateur --version).
Bufh
37

Il existe un raccourci clavier qui demande aux informations actuelles du shell de s'afficher:

Ctrl+ x Ctrl+v

De man bash

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

C'est le meilleur choix si vous avez eu affaire à des variables d'environnement.

vegatripy
la source
8

Non, tout va bien. De man bash:

   --verbose
          Equivalent to  -v.

Ce n'est tout simplement pas aussi silencieux que d'habitude. Essayer

--version 

au lieu.

Utilisateur inconnu
la source
1

L’habitude --versionpeut vous donner trop de passe-partout multi-lignes, c’est pourquoi j’utilise

bash -c 'echo $BASH_VERSION'
sorin
la source
Duplicata de la réponse
wjandrea
4
@wjandrea C'est différent de la réponse de Paweł Nadolski . Il exécute la commande dans un nouveau bashshell. Une des façons dont cela est utile est de ne pas avoir besoin du shell en cours d'utilisation bash. Une autre est que, même dans bash, il est possible (bien que pas bon ) de définir BASH_VERSIONune valeur différente. Il peut même être exporté en tant que variable d'environnement. Cependant, même après exécution export BASH_VERSION=foobar, la méthode indiquée ici fonctionne, car le nouveau bashshell réinitialise BASH_VERSIONautomatiquement le sien avant de développer le paramètre qui le lit.
Eliah Kagan
@EliahKagan, dans mon système 16.04 LTS installé, mis à jour et mis à niveau, installé à partir du fichier iso 16.04.1, bash --versiondit 4.3.48(1)-releaseet apt-cache policy bashdit 4.3-14ubuntu1.2et j'ai vérifié que le bashfichier exécutable provient du paquet 'bash'. Comment cela devrait-il être interprété? Il existe une incompatibilité similaire pour usb-creator-gtk, et dans ce cas, la sortie d’apt-cache est correcte. - Peut-on en conclure que le numéro de version le plus élevé est le bon (et que quelqu'un a oublié de mettre à jour l'autre)?
Sudodus
1
@sudodus Le numéro de version d'un programme peut être différent du numéro de version du paquet APT dans lequel il entre. C'est ce que vous voyez ici. 4.3.48...est la version de Bash, 4.3-14...est la version du bashpaquet.
Wjandrea
@EliahKagan j'ai oublié de mentionner avant, merci de me corriger! J'apprécie la connaissance.
Wjandrea
0

Pour obtenir uniquement la version et non le texte multiligne:

$ bash --version | head -1 | cut -d ' ' -f 4
Eyal Levin
la source