Çalıştırdığım bash sürümünü nasıl bulabilirim?


161

(bash öğreniyor) Yazdığım için bash versiyonunu kontrol etmeye çalışıyordum /bin/bash -v.

Ekrana çok fazla metin çıktı (.bashrc içeriği ve bundan kaynaklanan diğer dosyalar).

Bu komut nedeniyle bir şeyi mahvedebilir miyim (bazı yapılandırma dosyalarının üzerine yazmak / yanlış ortam değişkenlerini ayarlamak vb. Gibi)?

Ayrıca -vanahtarın ne için olduğuna dair bir belge bulamıyorum .


Eğer bash -vkoştuysanız, ayrıntılı mod etkinleştirilmiş yeni bir bash kabuğu çağırdınız, böylece daha sonraki komutlar için ayrıntılı çıktı göreceksiniz (en azından göreceksiniz printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"). exitAyrıntıları sonlandırmak için komut yazın - orijinal ayrıntılı olmayan bash kabuğuna (veya içinde bulunduğunuz kabuk) geri döneceksiniz.
ADTC

Yanıtlar:


165

-vBash için parametre ayrıntılı açılımı ve ne yaptığını hakkında mümkün olduğunca fazla bilgi yazdırmak için bash talimatını verir. Başlangıçta, okuduğu tüm konfigürasyonları yazdırır.

Bash için sürüm bilgisini yazdırmak için kullanın bash --version.


Harika! Ayrıca bash için anahtarların listesini buldum .
Zabba

33
Alternatif olarak, zaten bir bash kabuğu kullanıyorsanız, özel BASH_VERSION değişkeninin içeriğini çıktı alabilirsiniz. echo "$BASH_VERSION". Ayrıca, her sürüm numarasını ayrı elemanlar içeren özel bir dizi (BASH_VERSINFO) de vardır. 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
Yazım hatası, gibi bir şey olmalı [ "${BASH_VERSINFO}" -lt 4 ]ya da[ "${BASH_VERSINFO[0]}" -lt 4 ]
bufh

Çok ayrıntılı, askubuntu.com/a/899187/1004
sorin

Bu yöntemle ilgili sorun, oturum açma sırasında herhangi bir ortam değişkenini değiştiren herhangi bir komut dosyasının, sembolik bağlantının veya herhangi bir diğer karışıklık yapılandırmasının% 100 olduğundan emin olamazsınız. Aşağıda cevapladığım gibi, Ctrl + x Ctrl + v, herhangi bir ortam değişkeninden bağımsız olarak, tam olarak şu anda çalıştırmakta olduğunuz bash sürümünü gösterir.
vegatripy

98

Bash çalıştırırken (örn. Den gnome-terminal) BASH_VERSIONortam değişkeninin değerini kontrol edebilirsiniz .

$ echo $BASH_VERSION
4.2.37(1)-release

Değer boşsa, koşmuyorsunuz demektir bash.


11
Bu sadece çalıştırmaktan iyidir bash --version, çünkü sadece sisteminizde bash kurulu olduğundan değil, o sırada bash kullandığınızı doğrular.
Flimm

1
+1 bash --version, kullanmakta olduğunuz bash değerini göstermiyor.
gabeio

Dikkat: Bir dizi BASH_VERSIONçalıştırmakta emin değildir bash: export BASH_VERSION; csh -c 'echo $BASH_VERSION $SHELL $shell'bu yüzden $BASH_VERSIONde ayarlanmış olabilir cshyanı
Tino

@Tino iyi, bir yapabilirsin $SHELL --version, ama yine SHELL'in üzerine yazılabilir (ve tüm kabuklar --version bayrağını desteklemez).
bufh

37

Mevcut kabuk bilgisinin görünmesini isteyen önemli bir kısayol var:

Ctrl+ x Ctrl+v

itibaren man bash

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

Ortam değişkenleriyle uğraştıysanız, bu en iyi seçimdir.


8

Hayır, her şey yolunda. Kimden man bash:

   --verbose
          Equivalent to  -v.

Sadece her zamanki gibi sessiz değil. Deneyin

--version 

yerine.


1

Her zamanki gibi --versionsize çok hatlı kazan verebilir, bu yüzden kullanıyorum

bash -c 'echo $BASH_VERSION'


4
@wjandrea Bu Paweł Nadolski'nin cevabından farklı . Komutu yeni bir bashkabukta çalıştırır. Bunun yararlı bir yolu, halihazırda kullanılmakta olan kabuğa ihtiyaç duymamasıdır bash. Bir diğeri ise, içinde bile basholsa ( iyi olmasa da ) BASH_VERSIONfarklı bir değere ayarlamak mümkün. Çevre değişkeni olarak bile ihraç edilebilir. Yine de çalıştıktan sonra bile export BASH_VERSION=foobar, burada verilen yöntem işe yarıyor, çünkü yeni bashkabuk BASH_VERSIONonu okuyan parametre genişlemesini gerçekleştirmeden önce otomatik olarak kendini sıfırlıyor.
Eliah Kagan

@EliahKagan, güncellenen ve yükseltilen 16.04.1 iso dosyasından yüklenen 16.04 LTS sistemimde bash --versiondiyor 4.3.48(1)-releaseve apt-cache policy bashdiyor 4.3-14ubuntu1.2ki çalıştırılabilir bashdosyanın 'bash' paketinden geldiğini kontrol ettim . Bu nasıl yorumlanmalı? Benzer bir uyumsuzluk var usb-creator-gtkve bu durumda apt-cache çıkışı doğru. - Daha yüksek sürüm numarasının doğru sayı olduğu sonucuna varabilir miyiz (ve diğeri güncellemeyi unuttu)?
sudodus,

1
@sudodus Bir programın sürüm numarası, geldiği APT paketinin sürüm numarasından farklı olabilir. Burada gördüğünüz şey budur. 4.3.48...Bash 4.3-14...sürümü, bashpaketin sürümüdür .
wjandrea

@EliahKagan Daha önce de belirtmeyi unuttum, beni düzelttiğiniz için teşekkürler! Bilgiyi takdir ediyorum.
wjandrea

0

Çok satırlı metni değil yalnızca sürümü almak için:

$ bash --version | head -1 | cut -d ' ' -f 4
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.