Benim .profile
, Bash ile ilgili takma adların ve fonksiyonların sadece giriş kabuğu aslında Bash ise kaynaklı olduğundan emin olmak için aşağıdaki kodu kullanıyorum :
# If the current (login) shell is Bash, then
if [ "${BASH_VERSION:-}" ]; then
# source ~/.bashrc if it exists.
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Şu anda kabuk yapılandırma dosyalarımı, komut dosyalarını ve işlevlerini sürüm denetimi altına alma sürecindeyim. Ben de son zamanlarda değiştirilmesi, örneğin Bash özgü özelliklerinden fayda görmeyen kabuk komut, gelen gündelik Bashisms kaldırma işlemini başlattık function funcname()
ile funcname()
.
Kabuk dosyaları havuzum için, yanlışlıkla Bash'e özel sözdizimini tanıtmamamı sağlamak için , Debian'ın devscripts paketindeki yardımcı programı havuzdaki her dosyada çalıştıran bir ön işleme kanca yapılandırdım . Ancak, bu benim için bir hata oluşturur :checkbashisms
sh
.profile
possible bashism in .profile line 51 ($BASH_SOMETHING):
if [ "${BASH_VERSION:-}" ]; then
Hangi merminin çalıştığını kontrol etmenin bir uyarı olup olmadığını kontrol etmenin bir yolu olup olmadığını merak ediyordum checkbashisms
.
POSIX tarafından listelenen kabukla ilgili değişkenlerin listesini , bunlardan birinin geçerli kabuğu göstermek için kullanılabileceğini umarak kontrol ettim . Ayrıca etkileşimli bir Dash kabuğunda ayarlanan değişkenlere de baktım ancak yine uygun bir aday bulamadım.
Şu anda, .profile
tarafından işlenmekten dışlandım checkbashisms
; küçük bir dosya olduğundan manuel olarak kontrol etmek zor değildir. Ancak, sorunu araştırdıktan sonra, hangi kabuğun çalıştığını belirlemek için POSIX uyumlu bir yöntem olup olmadığını bilmek istiyorum (veya en azından checkbashisms
başarısızlığa neden olmayan bir yol ).
Daha fazla arka plan / açıklama
Kabuk yapılandırma dosyalarımı sürüm denetimi altına almamın nedenlerinden biri, ortamımı şu anda düzenli olarak oturum açtığım tüm sistemlerde yapılandırmaktır: Cygwin, Ubuntu ve CentOS (hem 5 hem de 7, Active Directory'yi kullanıcı için kullanma) doğrulama). Çoğunlukla X Windows / masaüstü ortamları ve uzak ana bilgisayarlar için SSH ile oturum açıyorum. Bununla birlikte, bunun gelecekteki kanıt olmasını ve sistem bağımlılıklarına ve diğer araçlara mümkün olan en az güven duymasını istiyorum.
checkbashisms
Kabuğumla ilgili dosyalarımın sözdizimi için basit, otomatik bir sağlık kontrolü olarak kullanıyorum . Mükemmel bir araç değil, örneğin, command -v
senaryolarımın kullanımından şikayet etmemesi için zaten bir yama uyguladım . Araştırma yaparken, programın asıl amacının, anladığım kadarıyla 2008'den (veya 2013 revizyonundan) POSIX 2004'e dayanan Debian politikasına uymak olduğunu öğrendim.
.bash_profile
hem .profile
ve hem de (koşullu olarak) kaynakları yazın .bashrc
.