سؤال كيف يمكنني العثور على إصدار باش الذي أقوم بتشغيله؟


(تعلم bash) كنت أحاول التحقق من إصدار bash لذا كتبت /bin/bash -v.

أنتجت الكثير من النص على الشاشة (محتويات .bashrc ، وملفات أخرى مصدرها).

هل يمكنني أن أفسد شيئًا ما (مثل الكتابة فوق بعض ملفات التهيئة / إعداد متغيرات بيئة غير صحيحة إلخ) بسبب ذلك الأمر؟

أنا أيضا لا يمكن العثور على وثائق حول ما -v التبديل هو ل.


143
2018-05-02 17:07


الأصل


إذا ركضت bash -v لقد قمت باستدعاء قاذفة جديدة مع تنشيط وضع verbose ، لذلك سترى مخرجات مطولة لمزيد من الأوامر (على أقل تقدير سترى printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"). لإنهاء الإسهاب ، اكتب exit الأمر - ستعود مرة أخرى إلى الغلاف الأصلي الأصلي غير المطابق (أيًا كانت القوقعة التي كنت فيها). - ADTC


الأجوبة:


ال -v معلمة bash تعني كلمة verbose ، وتطلب من bash طباعة أكبر قدر ممكن من المعلومات حول ما تفعله. عند بدء التشغيل ، ستقوم بطباعة جميع التكوينات التي تقرأها.

لطباعة معلومات الإصدار لـ bash ، استخدم bash --version.


140
2018-05-02 17:11



عظيم! كما وجدت قائمة مفاتيح لباش. - Zabba
بدلاً من ذلك ، إذا كنت تستخدم بالفعل إصدارًا من 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
مطبعي ، يجب أن يكون شيء من هذا القبيل [ "${BASH_VERSINFO}" -lt 4 ] أو [ "${BASH_VERSINFO[0]}" -lt 4 ] - bufh
مطول جدا ، أسهل بكثير مع askubuntu.com/a/899187/1004 - sorin
المشكلة في هذه الطريقة هي أنك لا تستطيع أن تكون متأكداً بنسبة 100٪ من أن أي برنامج نصي أو ارتباط رمزي أو أي نوع آخر من تهيئة العبث ، هو الذي غيّر أي متغير بيئة عند تسجيل الدخول. كما أجبت أدناه ، سيعرض لك Ctrl + x Ctrl + v إصدار bash الذي تشغله حاليًا ، بغض النظر عن أي متغير بيئة. - vegatripy


عند تشغيل باش (على سبيل المثال من gnome-terminal) يمكنك التحقق من قيمة BASH_VERSION متغيرات البيئة.

$ echo $BASH_VERSION
4.2.37(1)-release

إذا كانت القيمة فارغة ، فأنت لا تعمل bash.


83
2018-04-11 09:21



هذا أفضل من مجرد الجري bash --version، لأنه يؤكد أنك تستخدم حاليًا "bash" ، وليس فقط أن bash مثبتًا على نظامك. - Flimm
+1 bash --version لا تعرض باش الذي تستخدمه حاليًا. - gabeio
حذار: مجموعة BASH_VERSION لا يضمن أنك تعمل bash: export BASH_VERSION; csh -c 'echo $BASH_VERSION $SHELL $shell'، وبالتالي $BASH_VERSION قد يتم تعيين في csh كذلك - Tino
@ تينو جيدا ، هل يمكن أن تفعل $SHELL --versionولكن مرة أخرى قد يتم الكتابة فوق SHELL (و لا يدعم كل shell - علامة النسخ). - bufh


هناك اختصار رئيسي يرشد معلومات shell الحالية إلى الظهور:

السيطرة+س  السيطرة+الخامس

من عند man bash

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

هذا هو أفضل خيار إذا كنت قد تعبث مع متغيرات البيئة.


31
2018-04-10 08:32





لا ، كل شيء على ما يرام. من عند man bash:

   --verbose
          Equivalent to  -v.

إنها ليست صامتة كالمعتاد. محاولة

--version 

في حين أن.


8
2018-05-02 17:14





المعتاد --version قد يعطيك الكثير من النمطي متعدد الأسطر لذا فإن ما أستخدمه هو

bash -c 'echo $BASH_VERSION'

1
2018-04-01 14:29



تكرار من الجواب باول - wjandrea
wjandrea هذا مختلف عن الجواب Paweł Nadolski. تدير الأمر في جديد bash الصدف. إحدى الطرق المفيدة لذلك هي أنها لا تحتاج إلى استخدام shell في الوقت الحالي bash. آخر هو ، حتى في bash، من الممكن (وإن لم يكن جيد) لضبط BASH_VERSION لقيمة مختلفة. يمكن حتى تصديرها كمتغير بيئة. حتى بعد الجري export BASH_VERSION=foobarالطريقة التي يتم استخدامها هنا تعمل ، حيث أن الطريقة الجديدة bash شل إعادة تعيين الخاصة بها BASH_VERSION تلقائيًا قبل تنفيذ توسيع المعلمة الذي يقرأه. - Eliah Kagan
EliahKagan نقطة جيدة ، شكرا! - wjandrea
EliahKagan ، في نظامي LTS 16.04 المحدث والمطور الذي تم تثبيته والمثبت من ملف 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


للحصول على الإصدار فقط وليس النص متعدد الأسطر:

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

0
2018-02-21 15:11