Frage Wie finde ich die Version von bash, die ich verwende?


(Lern-Bash) Ich habe versucht, die Bash-Version zu überprüfen, damit ich tippte /bin/bash -v.

Dadurch wurde eine große Menge an Text auf den Bildschirm ausgegeben (Inhalt von .bashrc und andere von ihm bezogene Dateien).

Könnte ich aufgrund dieses Befehls etwas vermasselt haben (wie das Überschreiben einiger Konfigurationsdateien / das Setzen falscher Umgebungsvariablen usw.)?

Ich kann auch keine Dokumentation darüber finden, was -v Schalter ist für.


143
2018-05-02 17:07


Ursprung


Wenn du rennst bash -v Sie haben eine neue Bash-Shell aufgerufen, in der der ausführliche Modus aktiviert ist, so dass Sie eine ausführliche Ausgabe für weitere Befehle sehen werden (zumindest werden Sie sehen, dass Sie den Befehl ausführen) printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"). Um die Ausführlichkeit zu beenden, geben Sie ein exit Befehl - Sie werden wieder in der ursprünglichen nicht-verbose Bash Shell sein (oder in welcher Shell Sie auch waren). - ADTC


Antworten:


Das -v Parameter für bash steht für wortreich und weist bash an, so viele Informationen wie möglich über das, was es gerade tut, auszudrucken. Beim Start wird die gesamte eingelesene Konfiguration ausgedruckt.

Um die Versionsinformationen für bash auszudrucken, verwenden Sie bash --version.


140
2018-05-02 17:11



Groß! Ich habe auch das gefunden Liste der Schalter für bash. - Zabba
Alternativ können Sie, wenn Sie bereits eine Bash-Shell ausführen, den Inhalt der speziellen BASH_VERSION-Variablen ausgeben. echo "$BASH_VERSION". Es gibt auch ein spezielles Array (BASH_VERSINFO), das jede Versionsnummer in separaten Elementen enthält. if ((BASH_VERSINFO[0] < 4)); then echo "Sorry, you need at least bash-4.0 to run this script." >&2; exit 1; fi - geirha
Tippfehler, sollte etwas wie sein [ "${BASH_VERSINFO}" -lt 4 ] oder [ "${BASH_VERSINFO[0]}" -lt 4 ] - bufh
Zu ausführlich, viel einfacher mit askubuntu.com/a/899187/1004 - sorin
Das Problem bei dieser Methode besteht darin, dass Sie nicht 100% ig sicher sein können, dass ein Skript, eine symbolische Verbindung oder eine andere Art von Konfigurationsfehler die Umgebungsvariable bei der Anmeldung geändert hat. Wie ich unten beantwortet habe, zeigt Strg + x Strg + v Ihnen die aktuelle Bash-Version an, unabhängig von der Umgebungsvariablen. - vegatripy


Beim Ausführen von Bash (z. B. von gnome-terminal) Sie können den Wert von überprüfen BASH_VERSION Umgebungsvariable.

$ echo $BASH_VERSION
4.2.37(1)-release

Wenn der Wert leer ist, werden Sie nicht ausgeführt bash.


82
2018-04-11 09:21



Das ist besser als nur zu laufen bash --version, weil es bestätigt, dass Sie gerade bash ausführen, nicht nur, dass Sie bash auf Ihrem System installiert haben. - Flimm
+1 bash --version zeigt nicht die Bash, die Sie gerade verwenden. - gabeio
Vorsicht: Ein Set BASH_VERSION stellt nicht sicher, dass Sie ausgeführt werden bash: export BASH_VERSION; csh -c 'echo $BASH_VERSION $SHELL $shell', damit $BASH_VERSION kann eingestellt werden csh auch - Tino
@Tino naja, du könntest a machen $SHELL --version, aber SHELL könnte wieder überschrieben werden (und alle Shells unterstützen das Flag --version nicht). - bufh


Es gibt eine Tastenkombination, die angibt, dass aktuelle Shell-Informationen angezeigt werden:

Strg+x  Strg+v

Von man bash

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

Dies ist die beste Wahl, wenn Sie mit Umgebungsvariablen verstimmt sind.


31
2018-04-10 08:32





Nein, alles ist in Ordnung. Von man bash:

   --verbose
          Equivalent to  -v.

Es ist einfach nicht so still wie üblich. Versuchen

--version 

stattdessen.


8
2018-05-02 17:14





Das Übliche --version kann dir zu viel multi-line boilerplate geben, was ich benutze ist

bash -c 'echo $BASH_VERSION'

1
2018-04-01 14:29



Duplikat von Pawels Antwort - wjandrea
@wjandrea Das ist anders als Paweł Nadolskis Antwort. Es führt den Befehl in einem neuen aus bash Schale. Eine Möglichkeit ist, dass die aktuell verwendete Shell nicht benötigt wird bash. Ein anderes ist, dass sogar in bashes ist möglich (wenn auch nicht gut) zu setzen BASH_VERSION zu einem anderen Wert. Es kann sogar als Umgebungsvariable exportiert werden. Aber auch nach dem Laufen export BASH_VERSION=foobar, die hier angegebene Methode funktioniert, seit der neuen bash Shell setzt ihre eigenen zurück BASH_VERSION automatisch vor der Parametererweiterung, die es liest. - Eliah Kagan
@EliahKagan Guter Punkt, danke! - wjandrea
@EliahKagan, in meinem aktualisierten und aktualisierten installierten 16.04 LTS-System, das von der ISO-Datei 16.04.1 installiert wurde, bash --version sagt 4.3.48(1)-release und apt-cache policy bashsagt 4.3-14ubuntu1.2 und ich habe das ausführbare Programm überprüft bash Datei kommt aus dem Paket 'bash'. Wie soll das interpretiert werden? Es gibt eine ähnliche Diskrepanz für usb-creator-gtkund in diesem Fall ist die apt-cache-Ausgabe korrekt. - Können wir daraus schließen, dass die höhere Versionsnummer die richtige ist (und jemand vergessen hat, die andere zu aktualisieren)? - sudodus


Um nur die Version und nicht den mehrzeiligen Text zu erhalten:

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

0
2018-02-21 15:11