回答:
-v
bash のパラメーターはverboseの略で、bashに実行内容に関する可能な限り多くの情報を出力するよう指示します。起動時に、読み込んでいるすべての構成を印刷します。
bashのバージョン情報を印刷するには、を使用します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
[ "${BASH_VERSINFO}" -lt 4 ]
か[ "${BASH_VERSINFO[0]}" -lt 4 ]
bashを実行するとき(fromなどgnome-terminal
)、BASH_VERSION
環境変数の値を確認できます。
$ echo $BASH_VERSION
4.2.37(1)-release
値が空の場合、実行されていませんbash
。
bash --version
システムにbashがインストールされていることだけでなく、現在bashを実行していることを確認するため、単に実行するよりも優れています。
bash --version
は、現在使用しているbashを表示しません。
BASH_VERSION
はあなたが走っていることを保証するものではありませんbash
:でexport BASH_VERSION; csh -c 'echo $BASH_VERSION $SHELL $shell'
、同様に$BASH_VERSION
セットさcsh
れるかもしれません
$SHELL --version
、ここでもSHELLが上書きされる可能性があります(すべてのシェルは--versionフラグをサポートしていません)。
通常--version
は多行ボイラープレートが多すぎるので、私が使用しているのは
bash -c 'echo $BASH_VERSION'
bash
シェルでコマンドを実行します。これが役に立つ1つの方法は、現在使用されているシェルを必要としないということですbash
。もう1つは、でも、bash
(良いとは言えませんが)BASH_VERSION
別の値に設定することができるということです。環境変数としてエクスポートすることもできます。ただし、実行した後でもexport BASH_VERSION=foobar
、新しいbash
シェルはBASH_VERSION
それを読み取るパラメーター展開を実行する前に自動的にリセットされるため、ここで指定したメソッドは機能します。
bash --version
と言う4.3.48(1)-release
とapt-cache policy bash
言う4.3-14ubuntu1.2
と、私は実行することを確認しているbash
ファイルは、パッケージ「bashの」から来ています。これはどのように解釈されるべきですか?にも同様の不一致がusb-creator-gtk
あり、その場合、apt-cacheの出力は正しいです。-高いバージョン番号が正しいと結論づけることができますか(そして誰かが他のバージョン番号を更新するのを忘れていました)?
4.3.48...
はBash 4.3-14...
のバージョンであり、bash
パッケージのバージョンです。
bash -v
場合は、冗長モードをアクティブにして新しいbashシェルを呼び出したため、追加のコマンドの冗長出力が表示されます(最低限表示されますprintf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
)。冗長性を終了するには、exit
commandと入力します-元の非冗長bashシェル(または、使用していたシェル)に戻ります。