Ada kasus ketika shell Anda tidak memiliki parameter baris perintah untuk menentukan versi secara langsung. Kasus ini adalah Bourne shell. Untuk Bourne Shell saya akan merekomendasikan untuk menggunakan skrip:https://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh. Skripnya cukup kecil sehingga tidak menjadi masalah besar untuk meninjaunya dan memahami cara kerjanya. Saya telah menguji skrip ini di dalam shell yang berbeda di Linux dan Solaris dan selalu memberikan versi shell untuk saya.
Beberapa contoh:
Ubuntu 18.04
$ sh -c './whatshell.sh'
ash (Busybox 1.x)
$ bash -c './whatshell.sh'
bash 4.4.19(1)-release
CentOS 4
$sh -c './whatshell.sh'
bash 3.00.15(1)-release
Solaris 10
~> sh -c './whatshell.sh'
ksh88 Version (..-)11/16/88i (posix octal base)
~> bash -c './whatshell.sh'
bash 4.1.7(3)-release
~> csh -c './whatshell.sh'
SVR4 Bourne shell (SunOS 5 variant)
AIX 6.1
~> sh -c './whatshell.sh'
ksh88 Version (..-)11/16/88f
~> bash -c './whatshell.sh'
bash 4.2.0(1)-release
Ini juga jawaban untuk pertanyaan versi shell Bourne yang ditandai sebagai di luar topik.
Cukup gunakan perintah
gema $BASH_VERSION
Itu harus memberi Anda versi shell. BASH_VERSION adalah variabel lingkungan yang berisi versi shell.
Itu tergantung pada apakah Anda ingin mengetahui versi shell login default Anda, atau versi shell yang sedang Anda jalankan. Mereka belum tentu sama.
Untuk shell login default Anda, seperti jawaban yang diterima, $SHELL --version
kemungkinan untuk bekerja. Sebagian besar (tetapi tidak semua) shell menerima --version
pilihan. (dash
tidak.) Dan ini mengasumsikan bahwa nilai $SHELL
belum diubah (mungkin ada alasan yang sah untuk melakukannya).
Untuk shell yang sedang Anda jalankan, jika kebetulan bash
Anda dapat mengetik:
echo $BASH_VERSION
Untuk tcsh
:
echo $version
Untuk zsh
:
echo $ZSH_VERSION
echo $ZSH_PATCHLEVEL # shows more detailed information
Untuk ksh
:
echo $KSH_VERSION
Untuk fish
:
echo $version
Sekali lagi, ini mengasumsikan bahwa variabel yang relevan belum dimodifikasi (jarang ada alasan tidak berbahaya untuk mengubahnya).
Bash khususnya memiliki variabel array $BASH_VERSINFO
yang memberikan lebih banyak informasi dalam bentuk yang lebih mudah diproses secara terprogram. Mencetak $BASH_VERSINFO
hanya mencetak elemen pertama; untuk mencetak semua elemen:
echo "${BASH_VERSINFO[@]}"
Ini akan melakukannya:
$SHELL --version
Dalam kasus saya, hasilnya adalah:
zsh 5.0.2 (x86_64-pc-linux-gnu)