Farklı HPC düğümlerinde, VM'lerde veya kişisel iş istasyonumda farklı Bash sürümleri çalıştırdığım nispeten heterojen bir ortamda çalışıyorum. Giriş betiklerimi Git deposuna koyduğum için .bashrc
, "bu ana bilgisayar, o zaman ..." türünde bir karışıklık olmadan, tahtada aynı (ish) kullanmak istiyorum .
Ben gibi Bash ≤ genişletir 4.1 varsayılan davranış cd $SOMEPATH
içine cd /the/actual/path
basıldığında Tabanahtarı. Bash 4.2 ve üzeri, sen gerekir shopt -s direxpand
bu davranışı yeniden etkinleştirmek ve bu kullanılabilir hale vermedi 4.2.29 kadar . Yine de bu sadece bir örnek; başka bir, muhtemelen ilişkili bir shopt
seçenek, complete_fullquote
( tam olarak ne yaptığını bilmiyorum olsa da) v4.2'deki varsayılan davranışı da değiştirmiş olabilir.
Ancak, direxpand
Bash'in önceki sürümleri tarafından tanınmaz ve eğer shopt -s direxpand
benim .bashrc
için denersem, daha eski bir Bash ile bir düğüme her giriş yaptığımda bu bir hata mesajının konsola yazdırılmasına neden olur:
-bash: shopt: direxpand: invalid shell option name
Ne yapmak istiyorum shop -s direxpand
Bash> 4.1 bu seçeneği sağlam bir şekilde Bash eski sürümleri chafs olmadan etkinleştirmek için bir koşul sarmak ( yani , sadece hata çıkışını yeniden yönlendirmek değil /dev/null
).
.bashrc
. Hala $BASH_VERSINFO
kendi kabuğum için koşu kabuğunun büyük / küçük sürümünü sorgulamak için nasıl kullanılacağına dair bir kayıt istedim , bu yüzden kendi cevabımı göndermeyi bitirdim. :)