Bash 5’te yeni olacak ne


29

Ben sadece ilgisiz bir şey için resmi bash deposundan geçiyordum (genellikle bunu yapmam) ama bash 5'in zaten beta olduğunu fark ettim. Ben sadece bash 5'te neyin yeni olacağını merak ettim ama bilgi bulamadım. Birisi Bash ile 4.4 arasındaki 5. versiyon arasındaki değişiklikleri özetleyebilir mi?


6
Bu doğru var CHANGESdosyada: git.savannah.gnu.org/cgit/bash.git/tree/...
muru

Yanıtlar:


21

bash4.4 ve 5.0 sürümleri (2019-01-07 sürümleri) arasında yapılan değişiklikler kaynak dağıtımındaki NEWSdosyada bulunabilir bash.

İşte bunun için bir link (değişiklikler burada listelenemeyecek kadar çoktur).


Kısa bir görünüm terimi gösterir loadable builtins. Her zaman öncelik vermek yerine, gelişmiş yapıları bulmak bashiçin kurulan yeni standardı takip ediyor mu ? ksh93PATH
schily

@schily bash4.4 ve üstü, BASH_LOADABLES_PATHonları oradan kullanır ve yükler enable -f builtin-name.
Kusalananda

Peki, bu komut yüklendiği zaman için geçerli görünüyor. Peki ya geçen zaman? Komutun enableyeniden uygulanması gibi görünüyor, ancak her yerleşik komutla bir yolu ilişkilendirme özelliğini özlüyor; bu , genellikle tüm buiiltinler üzerinde önceden tanımlanmış ve iyi bir taneli denetime sahip olmasına izin veriyor. ksh93builtinksh93/usr/ast/bin/<name>
schily

@Kusalananda nasıl yeni bir bash 5.0 alabilirim
Ankur Loriya

@AnkurLoriya Unix distribütörünün paket olarak göndermesini ya da kaynaklardan derlenmesini bekleyin. Kaynaklar ve kurulum talimatları GNU Bash sayfasında bulunabilir .
Kusalananda

14

Eğer, benim gibi, değişmezlikten ziyade manşet özelliklerini arıyorsanız , koruyucu Chet Ramey'nin yazdığı yazı bunun üzerine gider. İşte ilginç bölüm:

Bu sürüm bash-4.4'teki birçok hata giderildi ve birkaç yeni özellik tanıtıldı. En önemli hata düzeltmeleri, aderef değişkenlerinin nasıl çözüldüğünün gözden geçirilmesi ve fuzzing yoluyla keşfedilen bir dizi sınır dışı bellek hatasıdır. Kelime bölmenin bir Posix standart yorumuna uymadığı çeşitli bağlamlarda $ @ ve $ * genişlemesinde bir takım değişiklikler ve Posix uyumluluğu için köşe vakalarını çözmek için ek değişiklikler vardır.

En dikkat çekici yeni özellikler birkaç yeni kabuk değişkenidir: BASH_ARGV0, EPOCHSECONDS ve EPOCHREALTIME. `History 'yerleşimi, tarih girişlerinin aralıklarını kaldırabilir ve negatif argümanları tarih listesinin sonundan ofset olarak anlar. Yerel değişkenlerin bir önceki kapsamda aynı ada sahip bir değişkenin değerini miras almasına izin veren bir seçenek vardır. Etkinleştirildiğinde, kabuğun ilişkisel dizi aboneliklerini yalnızca bir kez genişletmeye çalışmasına neden olan yeni bir kabuk seçeneği vardır (bu, aritmetik ifadelerde kullanıldığında bir sorundur). 'Globasciiranges' kabuğu seçeneği şimdi varsayılan olarak etkindir; yapılandırma zamanında varsayılan olarak kapalı olarak ayarlanabilir.

Bash-4.4 ve bash-5.0 arasında birkaç uyumsuz değişiklik var. Nameref değişkenlerinin nasıl çözümlendiğine ilişkin değişiklikler, uyumluluk sorunlarını en aza indirmeye çalışmama rağmen, bazı namerefs kullanımlarının farklı davranacağı anlamına gelir. Varsayılan olarak, kabuk genişletilmiş hata ayıklama modu etkinse başlangıçta yalnızca BASH_ARGC ve BASH_ARGV'yi ayarlar; koşulsuz olarak belirlendiğine ve komut dosyalarının çok sayıda argümandan geçirilmesinde performans sorunlarına yol açtığı bir denetimdi.

Ayrıca, daha fazla bilgi istemeniz durumunda, bu iki dosyayı da ifade eder:


5

`History 'yerleşimi, tarih girişlerinin aralıklarını kaldırabilir ve negatif argümanları tarih listesinin sonundan ofset olarak anlar.

Bir aralığı silme örneği:

history -d 123-130

veya son 10'u silmek:

history -d -10--1

Bash 5 Man Page'den alıntı :

'Tarihçe'

Seçenekler, sağlandıysa, aşağıdaki anlamlara gelir:

'-d OFFSET' OFFSET konumundaki geçmiş girişini silin. OFFSET pozitif ise, tarih görüntülendiğinde göründüğü gibi belirtilmelidir. OFFSET negatifse, son geçmiş konumundan bir tanesine göre yorumlanır, bu nedenle negatif endeksler geçmişin sonundan geriye doğru sayılır ve '-1' dizini geçerli 'history -d' komutunu ifade eder.

'-d START-END' dahil olmak üzere, START ve END konumları arasındaki geçmiş girişlerini silin. START ve END için pozitif ve negatif değerler yukarıda açıklandığı gibi yorumlanır.

İlgili cevabımı gör: Bir dizi bash geçmişini sil

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.