さまざまなバージョンのBashをさまざまなHPCノード、VM、または個人用ワークステーションで実行している可能性がある、比較的異種の環境で作業しています。私はログインスクリプトをGitリポジトリに配置しているので.bashrc
、「もしこのホストなら...」タイプの面倒さをあまり使わずに、同じように全面的に使用したいと思います。
私のようなバッシュ≤拡大し4.1のデフォルトの動作cd $SOMEPATH
にcd /the/actual/path
押したときにTabキーを。バッシュ4.2以上では、あなたがする必要があるだろうshopt -s direxpand
し、この動作を再度有効にし、それが利用可能になっていませんでした4.2.29まで。ただし、これはほんの一例です。別の、おそらく関連するshopt
オプションcomplete_fullquote
(それが何をするのか正確にはわかりませんが)もv4.2でデフォルトの動作を変更した可能性があります。
ただし、direxpand
以前のバージョンのBashでは認識されないためshopt -s direxpand
、自分のを使用しようとする.bashrc
と、古いBashのノードにログインするたびにエラーメッセージがコンソールに出力されます。
-bash: shopt: direxpand: invalid shell option name
私は何をしたいのは、条件付きの周りをラップでshop -s direxpand
バッシュの旧バージョン(擦れずに、堅牢な方法でバッシュ> 4.1にそのオプションを有効にするには、すなわち、ちょうどにエラー出力をリダイレクトしません/dev/null
)。
.bashrc
です。$BASH_VERSINFO
私自身の啓蒙のために、実行中のシェルのメジャー/マイナーバージョンを調べる方法を記録したかったので、自分の回答を投稿しました。:)