Question Comment trouver la version de bash que je lance?


(apprentissage bash) J'essayais de vérifier la version bash donc j'ai tapé /bin/bash -v.

Cela a généré beaucoup de texte à l'écran (contenu de .bashrc et autres fichiers provenant de celui-ci).

Pourrais-je avoir foiré quelque chose (comme écraser des fichiers de configuration / définir des variables d'environnement incorrectes, etc.) en raison de cette commande?

Je ne trouve pas non plus de documentation sur ce que le -v commutateur est pour.


143
2018-05-02 17:07


origine


Si vous avez couru bash -v vous avez invoqué un nouveau shell bash avec le mode verbose activé, vous verrez donc une sortie verbeuse pour des commandes supplémentaires (au minimum, vous verrez printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"). Pour mettre fin à la verbosité, tapez exit command - vous serez de retour dans le shell bash original non verbeux (ou quel que soit le shell dans lequel vous vous trouviez). - ADTC


Réponses:


le -v paramètre pour bash signifie verbose, et demande à bash d'imprimer autant d'informations que possible sur ce qu'il fait. Au démarrage, il imprimera toute la configuration en cours de lecture.

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


140
2018-05-02 17:11



Génial! J'ai aussi trouvé le liste des commutateurs pour bash. - Zabba
Si vous exécutez déjà un shell bash, vous pouvez également afficher le contenu de la variable BASH_VERSION spéciale. echo "$BASH_VERSION". Il y a aussi un tableau spécial (BASH_VERSINFO) contenant chaque numéro de version dans des éléments séparés. if ((BASH_VERSINFO[0] < 4)); then echo "Sorry, you need at least bash-4.0 to run this script." >&2; exit 1; fi - geirha
typo, 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% qu'un script, un lien symbolique ou tout autre type de configuration de la mise à niveau qui a modifié une variable d'environnement lors de la connexion. Comme je l’ai répondu ci-dessous, Ctrl + x Ctrl + v vous montrera exactement la version bash que vous utilisez actuellement, quelle que soit la variable d’environnement. - vegatripy


Lors de l'exécution de bash (par exemple à partir de gnome-terminal) vous pouvez vérifier la valeur de BASH_VERSION 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.


82
2018-04-11 09:21



C'est mieux que de courir bash --version, car cela confirme que vous utilisez actuellement bash, pas seulement que bash est installé sur votre système. - Flimm
+1 bash --version ne montre pas le bash que vous utilisez actuellement. - gabeio
Attention: un ensemble BASH_VERSION ne garantit pas que vous courez bash: export BASH_VERSION; csh -c 'echo $BASH_VERSION $SHELL $shell', alors $BASH_VERSION peut être mis en csh ainsi que - Tino
@Tino bien, vous pourriez faire un $SHELL --version, mais encore une fois, SHELL pourrait être écrasé (et tous les shell ne supportent pas le drapeau --version). - bufh


Il existe un raccourci clavier qui indique les informations actuelles sur le shell à 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 manipulé des variables d'environnement.


31
2018-04-10 08:32





Non, tout va bien. De man bash:

   --verbose
          Equivalent to  -v.

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

--version 

au lieu.


8
2018-05-02 17:14





L'habituel --version peut vous donner trop de passe-partout multi-lignes alors ce que j'utilise est

bash -c 'echo $BASH_VERSION'

1
2018-04-01 14:29



Duplicata de La réponse de Pawel - wjandrea
@wjandrea Ceci est différent de La réponse de Paweł Nadolski. Il exécute la commande dans un nouveau bash coquille. Une façon utile est de ne pas avoir besoin que le shell soit utilisé bash. Un autre est que, même dans bash, c'est possible (mais pas bien) mettre en place BASH_VERSION à une valeur différente. Il peut même être exporté en tant que variable d'environnement. Pourtant, même après avoir couru export BASH_VERSION=foobar, la méthode donnée ici fonctionne, puisque la nouvelle bash shell remet ses propres BASH_VERSION automatiquement avant d’effectuer l’extension du paramètre qui le lit. - Eliah Kagan
@EliahKagan Bon point, merci! - wjandrea
@EliahKagan, dans mon système 16.04 LTS installé et mis à jour installé à partir du fichier iso 16.04.1, bash --version dit 4.3.48(1)-release et apt-cache policy bashdit 4.3-14ubuntu1.2 et j'ai vérifié que l'exécutable bash le fichier provient du paquet 'bash'. Comment cela devrait-il être interprété? Il y a un décalage similaire pour usb-creator-gtk, et dans ce cas la sortie apt-cache est correcte. - Pouvons-nous en conclure que le numéro de version le plus élevé est le bon (et quelqu'un a oublié de mettre à jour l'autre)? - sudodus


Pour obtenir uniquement la version et non le texte multiligne:

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

0
2018-02-21 15:11