Làm cách nào để tìm phiên bản bash tôi đang chạy?


161

(học bash) Tôi đã cố kiểm tra phiên bản bash nên tôi đã gõ /bin/bash -v.

Điều đó đã xuất ra toàn bộ rất nhiều văn bản trên màn hình (nội dung của .bashrc và các tệp khác có nguồn gốc từ nó).

Tôi có thể làm hỏng cái gì đó (như ghi đè một số tệp cấu hình / cài đặt các biến môi trường không chính xác, v.v.) do lệnh đó không?

Tôi cũng không thể tìm thấy tài liệu về việc -vchuyển đổi để làm gì.


Nếu bạn đã chạy, bash -vbạn đã gọi một bash shell mới với chế độ dài dòng được kích hoạt, vì vậy bạn sẽ thấy đầu ra dài dòng cho các lệnh tiếp theo (ở mức tối thiểu bạn sẽ thấy printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"). Để kết thúc mức độ chi tiết, hãy gõ exitlệnh - bạn sẽ quay lại shell bash không dài dòng ban đầu (hoặc bất kỳ shell nào bạn đang ở).
ADTC

Câu trả lời:


165

Các -vtham số cho bash là viết tắt của tiết, và chỉ thị bash để in ra càng nhiều thông tin càng tốt về những gì nó đang làm. Khi khởi động, nó sẽ in ra tất cả cấu hình mà nó đang đọc.

Để in thông tin phiên bản cho bash, sử dụng bash --version.


Tuyệt quá! Tôi cũng tìm thấy danh sách các công tắc cho bash .
Zabba

33
Ngoài ra, nếu bạn đang chạy bash shell, bạn có thể xuất nội dung của biến BASH_VERSION đặc biệt. echo "$BASH_VERSION". Ngoài ra còn có một mảng đặc biệt (BASH_VERSINFO) chứa mỗi số phiên bản trong các thành phần riêng biệt. 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
lỗi đánh máy, nên là một cái gì đó giống như [ "${BASH_VERSINFO}" -lt 4 ]hoặc[ "${BASH_VERSINFO[0]}" -lt 4 ]
bufh

Quá dài dòng, dễ dàng hơn nhiều với Askubfox.com/a/899187/1004
sorin

Vấn đề với phương pháp này là bạn không thể chắc chắn 100% rằng bất kỳ tập lệnh, liên kết tượng trưng hoặc bất kỳ loại cấu hình gây rối nào khác, người đã thay đổi bất kỳ biến môi trường nào khi đăng nhập. Như tôi đã trả lời bên dưới, Ctrl + x Ctrl + v sẽ hiển thị cho bạn chính xác phiên bản bash bạn đang chạy, bất kể mọi biến môi trường.
ăn chay

98

Khi chạy bash (ví dụ từ gnome-terminal), bạn có thể kiểm tra giá trị của BASH_VERSIONbiến môi trường.

$ echo $BASH_VERSION
4.2.37(1)-release

Nếu giá trị trống, bạn không chạy bash.


11
Điều này tốt hơn là chỉ chạy bash --version, bởi vì nó xác nhận rằng bạn hiện đang chạy bash, không chỉ là bạn đã cài đặt bash trên hệ thống của mình.
Flimm

1
+1 bash --versionkhông hiển thị bash bạn hiện đang sử dụng.
gabeio

Hãy coi chừng: Một tập hợp BASH_VERSIONkhông đảm bảo rằng bạn đang chạy bash: export BASH_VERSION; csh -c 'echo $BASH_VERSION $SHELL $shell', vì vậy $BASH_VERSIONcó thể được thiết lập trong cshcũng
Tino

@Tino tốt, bạn có thể làm một $SHELL --version, nhưng một lần nữa SHELL có thể bị ghi đè (và tất cả các vỏ không hỗ trợ cờ --version).
bufh

37

Có một phím tắt hướng dẫn thông tin shell hiện tại để hiển thị:

Ctrl+ x Ctrl+v

Từ man bash

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

Đây là sự lựa chọn tốt nhất nếu bạn gặp rắc rối với các biến môi trường.


8

Không, mọi thứ đều ổn. Từ man bash:

   --verbose
          Equivalent to  -v.

Nó chỉ không im lặng như bình thường. Thử

--version 

thay thế.


1

Thông thường --versioncó thể cung cấp cho bạn quá nhiều nồi hơi nhiều dòng vì vậy những gì tôi đang sử dụng là

bash -c 'echo $BASH_VERSION'


4
@wjandrea Điều này khác với câu trả lời của Paweł Nadolski . Nó chạy lệnh trong một bashshell mới . Một cách này rất hữu ích là nó không cần vỏ hiện đang được sử dụng bash. Một điều nữa là, ngay cả trong bash, vẫn có thể (mặc dù không tốt ) để đặt BASH_VERSIONthành một giá trị khác. Nó thậm chí có thể được xuất khẩu như một biến môi trường. Ngay cả sau khi chạy export BASH_VERSION=foobar, phương thức được cung cấp ở đây vẫn hoạt động, vì bashshell mới BASH_VERSIONtự động thiết lập lại trước khi thực hiện mở rộng tham số đọc nó.
Eliah Kagan

@EliahKagan, trong hệ thống 16.04 LTS được cập nhật và nâng cấp của tôi được cài đặt từ tệp iso 16.04.1, bash --versionnói 4.3.48(1)-releaseapt-cache policy bashnói 4.3-14ubuntu1.2và tôi đã kiểm tra xem tệp thực thi bashcó xuất phát từ gói 'bash' không. Làm thế nào điều này nên được giải thích? Có một sự không phù hợp tương tự usb-creator-gtk, và trong trường hợp đó, đầu ra apt-cache là chính xác. - Chúng tôi có thể kết luận rằng số phiên bản cao hơn là số chính xác (và ai đó quên cập nhật số khác) không?
sudodus

1
@sudodus Số phiên bản của chương trình có thể khác với số phiên bản của gói APT mà nó đi kèm. Đó là những gì bạn đang thấy ở đây. 4.3.48...là phiên bản của Bash, 4.3-14...là phiên bản của bashgói.
wjandrea

@EliahKagan Tôi quên đề cập trước, cảm ơn vì đã sửa lỗi cho tôi! Tôi đánh giá cao kiến ​​thức.
wjandrea

0

Để chỉ nhận phiên bản và không phải văn bản nhiều dòng:

$ bash --version | head -1 | cut -d ' ' -f 4
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.