Domanda Come trovo la versione di bash I am in esecuzione?


(apprendimento bash) Stavo cercando di verificare la versione di bash così ho digitato /bin/bash -v.

Questo ha prodotto un sacco di testo sullo schermo (contenuto di .bashrc e altri file provenienti da esso).

Potrei aver rovinato qualcosa (come sovrascrivere alcuni file di configurazione / impostare variabili d'ambiente errate ecc.) A causa di quel comando?

Inoltre non riesco a trovare la documentazione su cosa sia -v interruttore è per.


143
2018-05-02 17:07


origine


Se hai corso bash -v hai invocato una nuova shell bash con modalità dettagliata attivata, quindi vedrai un output dettagliato per ulteriori comandi (come minimo vedrai printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"). Per terminare la verbosità, digitare exit comando - tornerai nella shell bash non verbosa originale (o in qualsiasi shell in cui ti trovavi). - ADTC


risposte:


Il -v il parametro per bash sta per verbose e indica a bash di stampare quante più informazioni possibili su ciò che sta facendo. All'avvio, stamperà tutta la configurazione in cui sta leggendo.

Per stampare le informazioni sulla versione per bash, utilizzare bash --version.


140
2018-05-02 17:11



Grande! Ho anche trovato il lista di interruttori per bash. - Zabba
In alternativa, se stai già eseguendo una bash shell, puoi generare il contenuto della variabile speciale BASH_VERSION. echo "$BASH_VERSION". C'è anche un array speciale (BASH_VERSINFO) contenente ogni numero di versione in elementi separati. if ((BASH_VERSINFO[0] < 4)); then echo "Sorry, you need at least bash-4.0 to run this script." >&2; exit 1; fi - geirha
errore di battitura, dovrebbe essere qualcosa di simile [ "${BASH_VERSINFO}" -lt 4 ] o [ "${BASH_VERSINFO[0]}" -lt 4 ] - bufh
Troppo prolisso, molto più facile con askubuntu.com/a/899187/1004 - sorin
Il problema con questo metodo è che non puoi essere sicuro al 100% che qualsiasi script, collegamento simbolico o qualsiasi altro tipo di configurazione di messaggistica, che ha cambiato qualsiasi variabile d'ambiente al momento dell'accesso. Come ho risposto di seguito, Ctrl + x Ctrl + v ti mostrerà esattamente la versione di bash che stai correntemente eseguendo, indipendentemente da qualsiasi variabile di ambiente. - vegatripy


Quando si esegue bash (ad es. Da gnome-terminal) è possibile verificare il valore di BASH_VERSION variabile d'ambiente.

$ echo $BASH_VERSION
4.2.37(1)-release

Se il valore è vuoto, non stai correndo bash.


82
2018-04-11 09:21



Questo è meglio che solo correre bash --version, perché conferma che stai correntemente bash, non solo che hai installato bash sul tuo sistema. - Flimm
+1 bash --version non mostra la bash che stai usando. - gabeio
Attenzione: un set BASH_VERSION non garantisce che tu stia correndo bash: export BASH_VERSION; csh -c 'echo $BASH_VERSION $SHELL $shell', così $BASH_VERSION può essere impostato in csh anche - Tino
@Tino bene, potresti fare a $SHELL --version, ma SHELL potrebbe nuovamente essere sovrascritto (e tutte le shell non supportano il flag --version). - bufh


C'è una scorciatoia di chiave che indica che le informazioni della shell corrente vengono visualizzate:

Ctrl+X  Ctrl+v

A partire dal man bash

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

Questa è la scelta migliore se hai incasinato le variabili d'ambiente.


31
2018-04-10 08:32





No, va tutto bene. A partire dal man bash:

   --verbose
          Equivalent to  -v.

Non è silenzioso come al solito. Provare

--version 

anziché.


8
2018-05-02 17:14





Il solito --version potrebbe darti troppa caldaia multipla, quindi quello che sto usando è

bash -c 'echo $BASH_VERSION'

1
2018-04-01 14:29



Duplicato di La risposta di Pawel - wjandrea
@wjandrea Questo è diverso da La risposta di Paweł Nadolski. Esegue il comando in un nuovo bash conchiglia. Un modo in cui questo è utile è che non ha bisogno della shell attualmente in uso bash. Un altro è quello, anche in bash, è possibile (anche se no bene) impostare BASH_VERSION ad un valore diverso. Può anche essere esportato come variabile di ambiente. Eppure, anche dopo la corsa export BASH_VERSION=foobar, il metodo qui riportato funziona, dal momento che il nuovo bash la shell si resetta BASH_VERSION automaticamente prima di eseguire l'espansione dei parametri che la legge. - Eliah Kagan
@EliahKagan Buon punto, grazie! - wjandrea
@EliahKagan, nel mio aggiornato e aggiornato sistema LTS 16.04 installato dal file iso 16.04.1, bash --version dice 4.3.48(1)-release e apt-cache policy bashdice 4.3-14ubuntu1.2 e ho controllato che l'eseguibile bash il file proviene dal pacchetto 'bash'. Come dovrebbe essere interpretato? C'è una discrepanza simile per usb-creator-gtke in tal caso l'output di apt-cache è corretto. - Possiamo concludere che il numero di versione più alto è quello corretto (e qualcuno ha dimenticato di aggiornare l'altro)? - sudodus


Per ottenere solo la versione e non il testo multilinea:

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

0
2018-02-21 15:11