bash 5の新機能


29

関係のないものについては、公式のbashリポジトリを調べていました(通常はこれを行いません)が、bash 5は既にベータ版であることに気付きました。bash 5の新機能に興味がありましたが、情報が見つかりませんでした。誰かがBashの4.4と5バージョンの間の変更を要約できますか


6
それは右ありますCHANGESファイル:git.savannah.gnu.org/cgit/bash.git/tree/...
muru

回答:


21

bashリリース4.4と5.0(2019-01-07のリリース)の間で行われた変更はNEWSbashソースディストリビューションのファイルで確認できます。

ここにリンクがあります(ここにリストするには変更が多すぎます)。


短いビューは用語を示していloadable builtinsます。DOESはbashして、新しい標準セットをフォローアップksh93を通じて強化組み込みコマンドを見つけるために、PATH代わりに常に優先し、それらを与えますか?
18年

@schily bash4.4以降ではBASH_LOADABLES_PATH、を使用してそれらからロードしますenable -f builtin-name
クサラナナンダ

まあ、これはコマンドがロードされる時間に当てはまるようです。過去の時間はどうですか?コマンドのenable再実装のように見えますが、すべての組み込みコマンドにパスを関連付ける機能がありません。これは通常、すべてのビルトインによって事前定義されており、すべてのビルインをきめ細かく制御できます。ksh93builtinksh93/usr/ast/bin/<name>
18年

@Kusalananda新しいbash 5.0の入手方法
アンクールロリヤ

@AnkurLoriya Unixディストリビュータがパッケージとして出荷するまで待つか、ソースから自分でコンパイルします。ソースとインストール手順は、GNU Bashページで入手できます
クサラナンダ

14

あなたが、私のように、完全なチェンジログではなく見出しの機能を探しているなら、メンテナーのChet Rameyによるこの投稿はそれを超えています。興味深いセクションは次のとおりです。

このリリースでは、bash-4.4のいくつかの未解決のバグが修正され、いくつかの新機能が導入されています。最も重要なバグ修正は、nameref変数の解決方法のオーバーホールと、ファジングを介して検出される潜在的な境界外メモリエラーの数です。Posix標準の解釈に準拠するために単語分割が実行されないさまざまなコンテキストでの$ @および$ *の展開に対する多くの変更と、Posix準拠のコーナーケースを解決するための追加の変更があります。

最も注目すべき新機能は、いくつかの新しいシェル変数:BASH_ARGV0、EPOCHSECONDS、およびEPOCHREALTIMEです。`history 'ビルトインは履歴エントリの範囲を削除でき、負の引数を履歴リストの末尾からのオフセットとして理解します。ローカル変数が前のスコープで同じ名前の変数の値を継承できるようにするオプションがあります。有効にすると、シェルが連想配列添え字を一度だけ展開しようとする新しいシェルオプションがあります(算術式で使用される場合、これは問題です)。`globasciiranges 'シェルオプションがデフォルトで有効になりました。構成時にデフォルトでオフに設定できます。

bash-4.4とbash-5.0の間には、互換性のない変更がいくつかあります。nameref変数の解決方法の変更は、namerefの一部の使用が異なる動作をすることを意味しますが、互換性の問題を最小限に抑えようとしました。デフォルトでは、拡張デバッグモードが有効な場合、シェルは起動時にBASH_ARGCとBASH_ARGVのみを設定します。無条件に設定され、スクリプトに多数の引数が渡されたときにパフォーマンスの問題が発生するのは見落としでした。

彼はあなたがもっとしたい場合に、これらの2つのファイルも参照しています:


5

`history 'ビルトインは、履歴エントリの範囲を削除でき、履歴リストの末尾からのオフセットとして負の引数を理解します。

範囲を削除する例:

history -d 123-130

または最後の10を削除します。

history -d -10--1

Bash 5 Manページからの抜粋:

'歴史'

オプションが提供される場合、オプションの意味は次のとおりです。

'-d OFFSET'位置OFFSETの履歴エントリを削除します。OFFSETが正の場合、履歴が表示されるときに表示されるように指定する必要があります。OFFSETが負の場合、それは最後の履歴位置よりも大きいものとして解釈されるため、負のインデックスは履歴の最後からカウントバックし、「-1」のインデックスは現在の「history -d」コマンドを指します。

'-d START-END' STARTからENDまでの履歴エントリを削除します(両端を含む)。STARTおよびENDの正および負の値は、上記のように解釈されます。

関連する回答を参照してください:bash履歴の範囲を削除します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.