さまざまなバージョンのBashをさまざまなHPCノード、VM、または個人用ワークステーションで実行している可能性がある、比較的異種の環境で作業しています。私はログインスクリプトをGitリポジトリに配置しているので、「(もしこのホストの場合)」タイプの面倒な作業を行わずに、同じ(ish).bashrc
を全面的に使用したいと思います。
私はlikeを押したときにcd $SOMEPATH
をcd /the/actual/path
に展開するBash≤4.1のデフォルトの動作 Tab キー。 Bash 4.2以降では、この動作を再度有効にするためにshopt -s direxpand
を実行する必要があり、thatが利用できなくなりました 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
を条件付きで囲んで、Bashの古いバージョンを擦らずに、Bashでそのオプションを堅牢な方法で有効にすることです>ie、エラー出力を/dev/null
にリダイレクトするだけではありません)。
direxpand
の出力にshopt
が存在するかどうかを確認し、存在する場合は有効にします。
shopt | grep -q '^direxpand\b' && shopt -s direxpand