Vraag Hoe vind ik de versie van bash die ik gebruik?


(bash leren) Ik probeerde de bash-versie te controleren, dus typte ik /bin/bash -v.

Dat leverde een hele hoop tekst op het scherm (inhoud van .bashrc en andere bestanden die er vandaan kwamen).

Kan ik iets hebben verpest (zoals het overschrijven van sommige configuratiebestanden / het instellen van onjuiste omgevingsvariabelen, enz.) Vanwege die opdracht?

Ik kan ook geen documentatie vinden over wat de -v schakelaar is voor.


143
2018-05-02 17:07


oorsprong


Als je liep bash -v je hebt een nieuwe bash-shell aangeroepen waarbij de uitgebreide modus is geactiveerd, dus je zult uitgebreidere uitvoer zien voor verdere opdrachten (je zult op zijn minst het minimum zien printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"). Om de breedsprakigheid te beëindigen, typt u exit commando - je komt terug in de originele non-verbose bash-shell (of in welke shell je ook zat). - ADTC


antwoorden:


De -v De parameter voor bash staat voor uitgebreide informatie en geeft bash opdracht om zoveel mogelijk informatie te publiceren over wat het doet. Bij het opstarten zal het alle configuratie afdrukken waarin het aan het lezen is.

Gebruik de versie-informatie voor bash om af te drukken bash --version.


140
2018-05-02 17:11



Super goed! Ik vond ook de lijst met schakelaars voor bash. - Zabba
Als u al een bash-shell gebruikt, kunt u ook de inhoud van de speciale BASH_VERSION-variabele uitvoeren. echo "$BASH_VERSION". Er is ook een speciale array (BASH_VERSINFO) met elk versienummer in afzonderlijke elementen. 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, zou zoiets moeten zijn [ "${BASH_VERSINFO}" -lt 4 ] of [ "${BASH_VERSINFO[0]}" -lt 4 ] - bufh
Te uitgebreid, veel eenvoudiger met askubuntu.com/a/899187/1004 - sorin
Het probleem met deze methode is dat u er niet 100% zeker van kunt zijn dat een script, symbolische link of een andere vorm van puinhoopconfiguratie bij het aanmelden elke omgevingsvariabele heeft gewijzigd. Zoals ik hieronder heb beantwoord, laat Ctrl + x Ctrl + v je precies zien welke bash-versie je momenteel gebruikt, ongeacht welke omgevingsvariabele dan ook. - vegatripy


Wanneer bash wordt uitgevoerd (bijvoorbeeld vanuit gnome-terminal) kunt u de waarde van controleren BASH_VERSION omgevingsvariabele.

$ echo $BASH_VERSION
4.2.37(1)-release

Als de waarde leeg is, loopt u niet bash.


82
2018-04-11 09:21



Dit is beter dan alleen maar hardlopen bash --version, omdat het bevestigt dat u momenteel bash gebruikt, niet alleen dat bash op uw systeem is geïnstalleerd. - Flimm
1 bash --version toont niet de bash die u momenteel gebruikt. - gabeio
Pas op: een set BASH_VERSION zorgt niet dat je loopt bash: export BASH_VERSION; csh -c 'echo $BASH_VERSION $SHELL $shell', dus $BASH_VERSION kan zijn ingesteld csh ook - Tino
@Tino nou, je zou een a kunnen doen $SHELL --version, maar nogmaals, SHELL kan worden overschreven (en alle shell ondersteunt geen --versievlag). - bufh


Er is een sneltoets waarmee de huidige shell-informatie wordt weergegeven:

Ctrl+X  Ctrl+v

Van man bash

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

Dit is de beste keuze als je te maken hebt met omgevingsvariabelen.


31
2018-04-10 08:32





Nee, alles is goed. Van man bash:

   --verbose
          Equivalent to  -v.

Het is gewoon niet zo stil als gewoonlijk. Proberen

--version 

in plaats daarvan.


8
2018-05-02 17:14





Het gebruikelijke --version kan je teveel multi-line boilerplate geven, dus wat ik gebruik is

bash -c 'echo $BASH_VERSION'

1
2018-04-01 14:29



Duplicaat van Pawel's antwoord - wjandrea
@wjandrea Dit is anders dan Paweł Nadolski's antwoord. Het voert de opdracht uit in een nieuwe bash shell. Een manier waarop dit nuttig is, is dat het de shell die momenteel wordt gebruikt, niet nodig heeft bash. Een andere is dat, zelfs in bash, het is mogelijk (hoewel niet goed) om in te stellen BASH_VERSION naar een andere waarde. Het kan zelfs worden geëxporteerd als een omgevingsvariabele. Maar toch ook na het hardlopen export BASH_VERSION=foobar, de methode die hier wordt gegeven, werkt, sinds het nieuwe bash shell reset zijn eigen BASH_VERSION automatisch vóór het uitvoeren van de parameteruitbreiding die het leest. - Eliah Kagan
@EliahKagan Goed punt, bedankt! - wjandrea
@EliahKagan, in mijn bijgewerkte en geüpgrade 16.04 LTS-systeem geïnstalleerd vanuit het iso-bestand 16.04.1, bash --version zegt 4.3.48(1)-release en apt-cache policy bashzegt 4.3-14ubuntu1.2 en ik heb gecontroleerd dat het uitvoerbare bestand bash bestand komt uit het pakket 'bash'. Hoe moet dit worden geïnterpreteerd? Er is een soortgelijke mismatch voor usb-creator-gtk, en in dat geval is de apt-cache-uitvoer correct. - Kunnen we concluderen dat het hogere versienummer de juiste is (en iemand vergat de andere te updaten)? - sudodus


Alleen de versie ophalen en niet de multiline-tekst:

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

0
2018-02-21 15:11