ฉันจะหาเวอร์ชั่นของ bash ที่ฉันใช้อยู่ได้อย่างไร?


161

(เรียนรู้ทุบตี) /bin/bash -vผมพยายามที่จะตรวจสอบรุ่นทุบตีดังนั้นฉันพิมพ์

นั่นแสดงข้อความจำนวนมากทั้งหน้าจอ (เนื้อหาของ. bashrc และไฟล์อื่น ๆ ที่มีแหล่งที่มาจากมัน)

ฉันจะทำให้บางอย่างผิดพลาด (เช่นการเขียนทับไฟล์กำหนดค่า / การตั้งค่าตัวแปรสภาพแวดล้อมที่ไม่ถูกต้อง ฯลฯ ) เนื่องจากคำสั่งนั้นได้หรือไม่

ฉันไม่สามารถหาเอกสารเกี่ยวกับ-vสวิตช์ได้


หากคุณวิ่งbash -vคุณเรียกใช้ bash shell ใหม่โดยเปิดใช้งานโหมด verbose ดังนั้นคุณจะเห็นเอาต์พุต verbose สำหรับคำสั่งเพิ่มเติม (อย่างน้อยที่สุดคุณจะเห็นprintf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}") หากต้องการสิ้นสุด verbosity ให้พิมพ์exitcommand - คุณจะกลับมาที่เชลล์ bash shell แบบเดิม (หรือเชลล์ที่คุณอยู่)
ADTC

คำตอบ:


165

-vพารามิเตอร์สำหรับการทุบตีย่อมาอย่างละเอียดและสั่งทุบตีเพื่อพิมพ์ข้อมูลมากที่สุดเท่าที่เป็นไปได้เกี่ยวกับสิ่งที่ทำ เมื่อเริ่มต้นระบบจะพิมพ์การกำหนดค่าทั้งหมดที่กำลังอ่าน

bash --versionเพื่อพิมพ์ข้อมูลรุ่นสำหรับทุบตีใช้


ที่ดี! ฉันยังพบรายชื่อของสวิทช์สำหรับการทุบตี
Zabba

33
หรือหากคุณใช้ bash shell อยู่แล้วคุณสามารถส่งออกเนื้อหาของตัวแปร BASH_VERSION พิเศษได้ echo "$BASH_VERSION". นอกจากนี้ยังมีอาร์เรย์พิเศษ (BASH_VERSINFO) ที่มีหมายเลขแต่ละเวอร์ชันในองค์ประกอบแยกต่างหาก 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
พิมพ์ผิด, ควรเป็นอะไรที่คล้ายกัน[ "${BASH_VERSINFO}" -lt 4 ]หรือ[ "${BASH_VERSINFO[0]}" -lt 4 ]
bufh

ละเอียดเกินไปง่ายกว่ามากกับaskubuntu.com/a/899187/1004
sorin

ปัญหาของวิธีนี้คือคุณไม่สามารถมั่นใจได้ 100% ว่าสคริปต์ลิงก์สัญลักษณ์หรือการกำหนดค่าอื่น ๆ ที่เปลี่ยนแปลงตัวแปรสภาพแวดล้อมใด ๆ เมื่อเข้าสู่ระบบ ตามที่ฉันตอบด้านล่าง Ctrl + x Ctrl + v จะแสดงเวอร์ชั่นทุบตีที่คุณกำลังใช้อยู่โดยไม่คำนึงถึงตัวแปรสภาพแวดล้อมใด ๆ
vegatripy

98

เมื่อใช้ bash (เช่นจากgnome-terminal) คุณสามารถตรวจสอบค่าของBASH_VERSIONตัวแปรสภาพแวดล้อม

$ echo $BASH_VERSION
4.2.37(1)-release

bashหากมีค่าเป็นที่ว่างเปล่าคุณไม่ได้ทำงาน


11
สิ่งนี้ดีกว่าเพียงแค่เรียกใช้bash --versionเพราะมันยืนยันว่าคุณกำลังใช้ bash อยู่ไม่ใช่แค่ว่าคุณได้ติดตั้ง bash ไว้ในระบบของคุณ
Flimm

1
+1 bash --versionไม่แสดง bash ที่คุณกำลังใช้อยู่
gabeio

ระวัง: ชุดBASH_VERSIONไม่แน่ใจว่าคุณกำลังใช้งานbash: export BASH_VERSION; csh -c 'echo $BASH_VERSION $SHELL $shell'ดังนั้น$BASH_VERSIONอาจจะตั้งอยู่ในcshเช่นกัน
โน่

@Tino ดีคุณสามารถทำ$SHELL --versionแต่อีกครั้ง SHELL อาจถูกเขียนทับ (และเชลล์ทั้งหมดไม่สนับสนุน --version flag)
bufh

37

มีปุ่มทางลัดที่สั่งให้เชลล์ข้อมูลปัจจุบันแสดงขึ้นมา:

Ctrl+ x Ctrl+v

จาก man bash

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

นี่เป็นตัวเลือกที่ดีที่สุดหากคุณสับสนกับตัวแปรสภาพแวดล้อม



1

ปกติ--versionอาจให้หม้อต้มหลายบรรทัดมากเกินไปดังนั้นสิ่งที่ฉันใช้คือ

bash -c 'echo $BASH_VERSION'


4
@wjandrea นี้จะแตกต่างจากคำตอบของPaweł Nadolski มันรันคำสั่งในbashเปลือกใหม่ bashวิธีการหนึ่งที่นี้จะเป็นประโยชน์ก็คือว่ามันไม่จำเป็นต้องเปลือกในขณะนี้ถูกนำมาใช้เพื่อเป็น อีกอย่างก็คือแม้ว่าbashจะเป็นไปได้ (แม้ว่าจะไม่ดี ) ในการตั้งค่าBASH_VERSIONที่แตกต่าง มันยังสามารถส่งออกเป็นตัวแปรสภาพแวดล้อม แม้หลังจากรันexport BASH_VERSION=foobarแล้วเมธอดที่ให้ที่นี่ยังทำงานได้เนื่องจากbashเชลล์ใหม่จะรีเซ็ตตัวเองBASH_VERSIONโดยอัตโนมัติก่อนดำเนินการขยายพารามิเตอร์ที่อ่าน
Eliah Kagan

@EliahKagan ในระบบ 16.04 LTS ที่ได้รับการอัปเดต & อัปเดตติดตั้งจากไฟล์ iso 16.04.1 แล้วbash --versionพูด4.3.48(1)-releaseและapt-cache policy bashพูด4.3-14ubuntu1.2และฉันได้ตรวจสอบแล้วว่าbashไฟล์ปฏิบัติการนั้นมาจากแพ็คเกจ 'ทุบตี' สิ่งนี้ควรตีความได้อย่างไร มีความไม่ตรงกันที่คล้ายกันusb-creator-gtkและในกรณีนั้นเอาต์พุต apt-cache นั้นถูกต้อง - เราสามารถสรุปได้ว่าหมายเลขรุ่นที่สูงกว่านั้นเป็นหมายเลขที่ถูกต้อง (และบางคนลืมที่จะอัปเดตหมายเลขอื่น)
sudodus

1
@sudodus หมายเลขเวอร์ชันของโปรแกรมอาจแตกต่างจากหมายเลขเวอร์ชันของแพ็คเกจ APT ที่เข้ามานั่นคือสิ่งที่คุณเห็นอยู่ที่นี่ 4.3.48...เป็นรุ่นของ Bash 4.3-14...เป็นรุ่นของbashแพ็คเกจ
wjandrea

@EliahKagan ฉันลืมพูดถึงก่อนหน้านี้ขอบคุณที่แก้ไขฉัน! ฉันขอขอบคุณความรู้
wjandrea

0

หากต้องการรับเวอร์ชันไม่ใช่ข้อความหลายบรรทัด:

$ bash --version | head -1 | cut -d ' ' -f 4
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.