-
Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathNEWS.ja
1122 lines (989 loc) · 63.5 KB
/
NEWS.ja
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Yash 更新履歴
## Yash 2.58 (未リリース)
- 初期化ファイルの場所を XDG_CONFIG_HOME 変数でカスタマイズできる
ようになった (POSIX 準拠モードを除く)
- [行編集] Vi 風編集モードのコマンドモードでもコマンドライン推定の
補完候補を表示するようになった
- [行編集] git-restore の補完を追加
- [行編集] git-merge の --continue オプションの補完を追加
- [行編集] . 組込みコマンドの最初の引数の補完で、スラッシュを入力する
前からディレクトリ名を補完候補として出すようにした
- POSIX.1-2024 のサポートを強化:
- `case` コマンドの分岐を `;;` の代わりに `;&` で区切ることで次の
分岐も実行させることができるようになった
- 非標準の拡張として `;|` もしくは `;;&` で区切ることで次の分岐
からパターンマッチングを再開させることもできる
- ドル一重引用符に対応した
- 宣言ユーティリティに対応した。`export`, `local`, `readonly`,
`typeset` 組込みの引数は、それが変数代入の形式をしているならば
変数代入と同様のやり方で展開されるようになった
- `bg` 組込みでジョブを再開した後は `!` 特殊パラメータはジョブの
プロセス ID に展開されるようになった
- POSIX 準拠モードであっても、対話シェルが `exec` 組込みで失敗した
ときはシェルを終了しないようにした
- `case` コマンドの分岐の最初のパターンとして `esac` が常に使用
できるようになった。(例: `case esac in (esac|case) echo ok; esac`)
以前は POSIX 準拠モードでは構文エラーとなっていた
- 入れ子のパラメーター展開で展開エラー発生時にクラッシュする可能性
があったのを修正
- 初期化スクリプト (yashrc) のサンプルを更新:
- エイリアス定義 h='fc -l' and j='jobs' を追加
- doas コマンドのラッパー関数を追加し、端末に紛らわしいウィンドウ
タイトルが表示されるのを避けるようにした
## Yash 2.57 (2024-08-04)
- "$POST_PROMPT_COMMAND" に対応。対話モードでコマンドを読むごとに
変数の値が実行される
- EXIT トラップ実行中にリダイレクトエラー等でシェルが終了する際、
EXIT トラップ開始直前の終了ステータスではなくエラーの終了
ステータスで終了するようにした
- [行編集] nounset オプション有効時に `git config alias.` に続けて
補完をしようとするとエラーが出るのを修正
- [行編集] カーソルがバックスラッシュの直後にある時に補完をすると
補完する単語に含まれるエスケープが必要な文字に対して
余計なバックスラッシュが挿入されるのを修正
- 初期化スクリプト (yashrc) のサンプルを更新:
- VS Code シェル統合のための設定を追加
## Yash 2.56.1 (2024-03-20)
- Cygwin で開けるファイル記述子の数を増やした
- "typeset -fp" で `${foo:/bar/baz}` 形式のパラメータ展開が誤って
`${foo:/#bar/baz}` と出力されるバグを修正
- `emacs-capitalize-word` 行編集コマンドの実行時にカーソルの後に
キャピタライズの対象となる文字がない場合に誤動作してクラッシュする
こともあるバグを修正
- `emacs-search-forward-current` および
`emacs-search-backward-current` 行編集コマンドを追加
- [行編集] `doas` コマンドの補完スクリプトを追加
======================================================================
凡例:
+: 新機能
-: 廃止機能
=: 仕様変更
*: バグ修正
x: 新たに加わってしまったバグ
----------------------------------------------------------------------
Yash 2.55 (2023-08-20)
+ 行編集: Enter/Send キー ("\et") にデフォルトで Ctrl-M キー
("\^M") と同じコマンドを割り当てるようにした
= 行編集: redraw-all および clear-and-redraw-all コマンドに引数を
与えることで二つのコマンドの動作を逆にできるようにした
* 日本語エラーメッセージの誤訳を修正
. 初期化スクリプト (yashrc) のサンプルを更新:
+ Ctrl-L を clear-and-redraw-all に割り当てるサンプルコード
. 補完スクリプトを更新:
+ git-switch と pass の補完
----------------------------------------------------------------------
Yash 2.54 (2023-02-25)
+ $PS1P 等の変数でコマンドライン推定の表示フォントスタイルを調整
できるようにした
+ --le-trim-right オプション
= POSIX 準拠モードでは、POSIX XCU 2.9.1 で動作を規定しないコマンド
として挙げられている組込みの実行を拒否するようにした。
準特殊組込みという分類を廃止して必須組込みと任意組込みに分けた。
"command" と "type" 組込みが表示する組込みの分類を併せて変更。
= POSIX で定義されている外部コマンドと同じ働きをする組込みを
実行するには、POSIX 準拠モードがオフでも、$PATH に対応する外部
コマンドが存在することを要求するようにした。これに該当する
組込みは今後は代替組込みと分類する。
= "array" 組込みを通常の組込みから拡張組込みに変更。POSIX 準拠
モードでは完全に存在が無視されるようになった
= xtrace オプションは $PS4 を展開する間は再帰的に動作しないように
なった
* allexport オプションが多くの場面で効いていなかった
* errexit および errreturn オプションが for ループでの代入エラーに
効いていなかった
* -C オプションが有効な時、存在しないファイルを指すシンボリック
リンクを ">" リダイレクトで開こうとすると無限ループしていた
* $DIRSTACK 変数がエクスポートされているとき、"pushd" および "popd"
組込みで $DIRSTACK 変数の値が正しく更新されていなかった
* "break", "continue", "return" 組込みの終了ステータスが "!" で反転
されていた
* エイリアスの値が空白と行連結で終わる場合に、行連結を取り除くと
値が空白で終わることから、誤って次のトークンをエイリアス置換の
対象にしていた
. 初期化スクリプト (yashrc) のサンプルを更新:
+ WSL 用の "o" エイリアスを定義
----------------------------------------------------------------------
Yash 2.53 (2022-08-23)
= 数式展開の結果が未定義動作となるとき確実にエラーとなるようにした
* 非対話シェルで for ループで代入に失敗したときシェルが終了して
いなかった
* "[[ 単語 =~ 正規表現 ]]" における正規表現にコマンド置換が入って
いると正常に解析できていなかった
* ヒアドキュメントの終端子に閉じられていない引用符が含まれていると
クラッシュしたり正常に動作しない場合があった
* argv なしで yash を起動するとクラッシュしていた
----------------------------------------------------------------------
Yash 2.52 (2021-10-11)
= 単語の展開時、一つの単語から複数の空文字列の単語に展開される場合
クォートされていなければ単語を除去するように変更。例えばブレース
展開 {,} は二つの空文字列ではなく 0 個の単語になる。
* 単語の展開時、単語が 1 文字の IFS 非空白類のみからなる場合、
単語を除去するのではなく一つの空文字列の単語に展開するように修正
* "typeset -fp" の出力で "<<-FOO" と "<< -FOO" が区別されて
いなかったのを修正
* realloc 関数の呼び出し時に一部の環境でメモリリークする問題を修正
. 補完スクリプトを更新:
* git: 引数をとるオプション ("-C" など) の後の単語が正常に補完
できない問題を修正
----------------------------------------------------------------------
Yash 2.51 (2020-12-12)
= 単語の展開でエラーが発生したとき、単語の残りの部分は展開せずに
直ちに展開を中止するようにした
= 位置パラメータが一つもないとき、"$@""$@" は 1 個の空文字列では
なく 0 個の文字列に展開するようにした
= 数式展開での引用符除去の動作を POSIX の定義に合わせた。今後は
$(("2" + \5)) のような書き方はエラーとなる
= 二重引用符内のパラメータ展開の置換用の単語における引用符の扱いを
他のシェルに合わせた。例えば "${x-\a'b'}" は ab ではなく \a'b' と
展開されるようになる
= コマンド名の単語がない単純コマンドでは、リダイレクトは代入の後に
サブシェルで実行するようにした
= ジョブ制御が無効なシェルでの非同期コマンドの標準入力は、予め
リダイレクトされている場合でも暗黙的に /dev/null にリダイレクト
するようにした
= "[[ 単語 =~ 正規表現 ]]" における正規表現内でのクォートされた
文字を Bash と (ほぼ) 同じように扱うようにした
* "command" 組込みの -v または -V オプションで外部コマンドのパスを
出力するとき、現在の作業ディレクトリが / または // だと余計な /
が出力パスの先頭に付いていた
* サブシェルに対するリダイレクトはサブシェルの中ではなく元のシェル
環境で実行するようにした
* リダイレクトされたサブシェルの中で EXIT トラップを実行するとき
リダイレクトが効いていなかった
* ジョブ制御が無効の時、非同期コマンド内で "trap" 組込みで SIGINT
と SIGQUIT のトラップを変更しても無視されていた
* ジョブ制御が無効の時、SIGINT または SIGQUIT にトラップが設定して
あると非同期コマンド実行時にそれらのシグナルが無視されて
いなかった
* パターンマッチングで、パターン内の展開結果にクォートされていない
バックスラッシュがあった場合、バックスラッシュ自身をクォートと
して扱うようにした
* 位置パラメータが一つもないとき、入れ子のパラメータ展開 "${{@}}"
は 1 個の空文字列ではなく 0 個の文字列に展開するようにした
* "[[ 単語 =~ 正規表現 ]]" における正規表現で括弧と縦棒を
演算子として使用できるようになった
----------------------------------------------------------------------
Yash 2.50 (2020-05-31)
* "-o notify" オプションが有効な時、"fg" 組込みコマンドで再開し終了
したコマンドのステータスが不必要に出力されていた
* terminfo データベースで何らかのキーが空文字列に対応させられて
いても行編集がフリーズしないようにした
* $LINENO を export したとき、外部コマンドに正しい値が渡される
ようにした
. 初期化スクリプト (yashrc) のサンプルを更新:
+ "crontab" コマンドのラッパー関数を追加し、"crontab -e" と打とう
としたときに誤って "crontab -r" でデータを消してしまうのを防ぐ
ようにした
. 補完スクリプトを更新:
+ git-rebase: Git 2.24.0 までの新しいオプションに対応
----------------------------------------------------------------------
Yash 2.49 (2019-09-22)
+ --for-local オプション
= '--no-unset' オプションが有効な時、パラメータ展開だけでなく
数式展開でも未定義の変数をエラーにするようにした
* 位置パラメータが無いとき ""$*, ""$@, $*"", $@"" が空文字列に
展開されず "$@" の様に扱われていた
* 環境によっては $RANDOM 変数が 32768 以上の値に展開されることが
あった
* "echo" 組込みコマンドで "\e" エスケープシーケンスが
動いていなかった
* コマンドリストの最後がサブシェルの場合、サブシェルの中で元の
シェルのジョブをサブシェルのジョブとして扱ってしまっていた
* ジョブが削除されるよりも前にプロセス ID が別のプロセスによって
使い回された場合、新しいジョブの状態が正しく更新されないことが
あった
* "typeset" 組込みコマンドで、コマンド名が予約語になっている
単純コマンドを含む関数が再解析可能な書式で出力されていなかった
. 補完スクリプトを更新:
* Git remote/fetch/pull/push コマンドの引数の補完でリモートの
ブランチ名が正しく補完されていなかった。
* rsync コマンドの引数の補完でローカルのパス名が正しく補完されて
いなかった。
----------------------------------------------------------------------
Yash 2.48 (2018-12-22)
+ 二重ブラケットコマンド ([[ ... ]] 構文)
+ "local" 組込みコマンド
+ --le-predict-empty オプション
+ プロンプトを $YASH_PS... 変数で定義できるようにした
= コマンドライン推定機能はコマンドを打ち始める前には動作しないのを
デフォルトにした
= $PS1 の初期値を変更
* 改行を含む数式展開の中で行番号が正しく数えられていなかった
* EXIT トラップ内のサブシェルの終了ステータスが誤って元のシェルの
EXIT トラップ開始前の終了ステータスになっていた
* EXIT トラップ内のサブシェルで新たな EXIT トラップを設定しても
無視されていた
* "typeset" 組込みコマンドで、複数のコマンドを含むコマンド置換を
含むヒアドキュメントを含む関数を表示するときクラッシュしていた
* "typeset" 組込みコマンドで、ヒアドキュメントを含むプロセス置換
(またはプロセスリダイレクト) を含む関数を表示するとき
ヒアドキュメントの内容が表示されていなかった
* for ループの変数名トークンあるいはヒアドキュメント演算子の直後の
トークンが、値が空白で始まるエイリアス置換の結果である場合に、
誤って構文エラーになっていた
* for ループの "do" がエイリアス置換の対象になっていた
* for ループでエイリアス置換により行頭に ";" が来る場合にエラーに
ならないことがあった
. POSIX 準拠モードで、POSIX で認められていない構文をエラーにした
* IO_NUMBER トークンをリダイレクトの対象にできないようにした
* 予約語をリダイレクトの直後に置けないようにした
. 初期化スクリプト (yashrc) のサンプルを更新:
= プロンプトを $YASH_PS... 変数で定義するようにした
* より多くの端末で動作するようウィンドウタイトルの設定方法を変更
* SIGTSTP, SIGTTIN, SIGTTOU でジョブが確実に停止するように
シグナルの無視を明示的にキャンセルするようにした
. 補完スクリプトを更新:
* git: 最新の Git でもファイルパスが正しく補完できるようにした
+ git-grep: Git 2.19.1 までの新しいオプションに対応
+ git-stash: Git 2.18.0 までの新しいオプションに対応
+ ping: いくつかの環境で共通のオプションをサポート
= ssh, ssh-keygen: OpenSSH 7.7 までの新しいオプションに対応
----------------------------------------------------------------------
Yash 2.47 (2018-04-11)
+ --errreturn オプション
= -x オプションで出力する展開結果に含まれる空白等をクォートする
ようにした。
= エイリアス・変数・キーバインドなどを出力する際の不要な引用符を
減らした。
* "set" 組込みを無引数で実行したときローカル変数しか出力されて
いなかった。
* "." 組込みでファイルを開けなかったとき位置パラメータが元に戻って
いなかった
* -C オプションが有効な時の ">" リダイレクトの信頼性を改善した。
以前のバージョンではリダイレクトを開く瞬間に他のプロセスがほぼ
同時にファイルを置き換えた場合に -C オプションが無視されることが
あった。
. 初期化スクリプト (yashrc) のサンプルを更新:
+ "direnv" を有効にするサンプルコード
----------------------------------------------------------------------
Yash 2.46 (2017-10-28)
= グローバルエイリアスを複合コマンドの中を含む全ての箇所で置換
するようにした。
* コマンドを常に行単位で実行するようにした。以前は、ファイルや標準
入力からの読み込みでない場合、コマンドを全て構文解析した後に実行
していた。
* 空白で終わる値に置換されるエイリアスの直後では次の単語も
エイリアス置換の対象となるが、このとき他のシェルと異なり一回しか
置換が働いていなかった。
* 空白で終わる値に置換されるエイリアスの直後でグローバルエイリアス
が二回置換されていた。
* 行連結があるとエイリアス置換が正しく繰り返されないことがあった。
----------------------------------------------------------------------
Yash 2.45 (2017-07-05)
+ 行編集: 新しいコマンドの追加:
complete-max-then-list, complete-max-then-next-candidate,
complete-max-then-prev-candidate
= $PS1 および $PS2 のプロンプト内の \j 記法で表示されるジョブの
個数は、既に終了しかつ終了したことが報告済であるジョブを含まない
ようになった
= "jobs" 組込みを -n オプションで実行したとき、その場で出力されない
終了済みジョブを消去しないようになった
* 数式展開で、未定義の変数は正しく 0 に展開されるようになった
* "-o notify" オプションが有効でもシェルが SIGCHLD を受信するまで
ジョブの状態が表示されていなかった
. デフォルトの初期化スクリプト (yashrc) を更新:
+ history -c で履歴を完全削除する前に確認するようになった
. 補完スクリプトを更新:
+ carthage: --cache-builds オプション
* git: コミットハッシュの候補の数を 10 個までにした
----------------------------------------------------------------------
Yash 2.44 (2017-01-17)
+ コマンドライン推定と '--le-predict' オプション
+ ~/.yashrc ファイルが見付からないときはデフォルトの初期化ファイル
を読み込むようになった
= シェルの起動時、$YASH_LOADPATH は環境変数に存在しない場合のみ
初期化するようになった
* 補完スクリプトを修正: carthage, git, git-log, git-revert,
git-submodule, ssh
* 対話シェルで "." 組込みで読み込んだスクリプトから "return" で戻る
ことができなかった
* "test" 組込みで単項 -o 演算子に "no" を付けたオプション名を指定
すると結果が逆になっていた ("test -o noclobber" など)
* "wait" 組込みでオペランドが一つでも不正な時は必ず終了ステータス
1 を返すようになった
* "in" を用いない for ループで、変数名の直後に改行を置いてその後に
セミコロンで区切ってもエラーになっていなかった
= POSIX.1-2008 Technical Corrigendum 2 (2016) のサポート。
(*) 印のものを除き、POSIX 準拠モードでの動作にのみ影響します。
. パイプラインで "!" の直後に "(" が来る場合は間に空白を入れる
ことが必須になった
. "in" を用いない for ループで、変数名と "do" の間をセミコロンで
区切れるようになった
. 一つの単純コマンドで変数に代入しながら関数を実行した時、変数は
関数実行終了後には残らないようになった (*)
. ジョブ制御が無効なときに非同期コマンドの標準入力を暗黙的に
/dev/null にリダイレクトするようになった。以前は、POSIX 準拠
モードにおいてはシェルが対話シェルであるときにリダイレクトして
いた。
. 非同期リストで SIGINT と SIGQUIT を自動的に無視するのはジョブ
制御が無効な時だけになった
. "bindkey", "complete", "dirs", "disown", "hash", "help",
"history", "popd", "pushd", "suspend", "type", "typeset",
"ulimit" は準特殊組込みコマンドになった
. "break" および "continue" 組込みコマンドは構文的に取り囲んで
いるループに対してのみ使用できるようになった (*)
. クォートされていない $* および $@ は $IFS が空文字列であっても
単語分割された状態に展開するようになった (*)
. 非対話シェルで代入エラーが起きたとき、コマンドの種類によらず
シェルが終了するようになった (*)
. 非対話シェルの特殊組込みコマンドでエラーが起きたとき、エラーの
種類によらずシェルが終了するようになった
----------------------------------------------------------------------
Yash 2.43 (2016-09-22)
* 補完スクリプトを更新: carthage, cd, su
----------------------------------------------------------------------
Yash 2.42 (2016-08-27)
+ '--pipefail' オプション
+ 補完スクリプトを追加: carthage, dnf, git-rev-parse, tree, watch
+ 補完スクリプトを更新: cd, git, git-bisect, git-rev-list
(Git 2.9.2).
= POSIX.1-2008 の 2013 年版に準拠
= 閉じられていないヒアドキュメントを常にエラーにするようになった
= ジョブ制御有効なシェルはデフォルトで SIGTTIN と SIGTTOU を
無視するように
= 行編集を SIGINT で中断・リセットできるようになった
= "-o errexit" オプション有効時は、複合コマンドのリダイレクトエラー
および for ならびに case コマンドでの展開エラーでもシェルを終了
するようになった
* 二重引用符内の `...` によるコマンド置換の中では、バックスラッシュ
による二重引用符のエスケープはコマンド置換のコマンドが解釈される
よりも前に解釈されるようにした
----------------------------------------------------------------------
Yash 2.41 (2016-03-20)
+ '--emptylastfield' オプション
+ "shift" 組込みの新しいオプション: -A
+ "shift" 組込みの引数に負数を指定できるようになった
+ 補完スクリプトを追加: git-notes, git-reflog, git-worktree
= コマンド名の無い単純コマンドで変数代入がエラーになった時、対話
シェルでなければすぐにシェルが終了するようになった
= For ループが読み取り専用の変数に代入しようとしたときは 0 でない
終了ステータスを返すようにした
= 位置パラメータが無いとき """$@" を "$@""" と同様に空の単語に展開
するようになった
= 単語分割での空単語の扱いを POSIX の意図に合わせて変更 (分割結果が
二単語以上で最後の単語が空単語の時、空単語を削除するようになった)
= "read" 組込みで最後の値を変数に代入するとき先頭に余分な空白を
残さないようになった
= 位置パラメータを連結するとき常に $IFS の最初の文字で区切るように
なった (以前は $IFS が無視される場合があった)
* プロセスリダイレクトの閉じ忘れをエラーとして検出できていなかった
* "echo" 組込みで、$ECHO_STYLE 変数が GNU または ZSH のとき、
単一のハイフンがオペランドとして出力されていなかった
* "typeset" 組込みで、引数で指定していない変数への一時代入がある
場合にクラッシュしていた
* "typeset" 組込みで関数を出力する時 -r オプションが無視されていた
* "typeset" 組込みで -f と -g オプションの同時使用をエラーと
するようにした
* "fg" および "bg" 組込みにオペランドを指定しなかった場合に
ジョブ制御対象外のジョブを再開しないようにした
* 連続した数値のブレース展開で整数が正しく解釈されないことがあった
* 存在しない履歴番号を "fc" 組込みのオペランドに指定した場合に
間違った範囲の履歴が処理されていた
* "fc" 組込みで "fc -s foo=bar n" 形式の構文が使えていなかった
* 対話シェルがジョブの状態を報告するときジョブの終了ステータスの
記録を消してしまっていた
* 履歴をファイルから読み込む際起こり得る未定義動作を修正
* ${foo/bar/baz} 形式のパラメータ展開が POSIX 準拠モードで無効に
なっていなかった
* 引用符で囲まれた空の単語が単語分割で誤って削除されていた
* パラメータ展開のインデックスでバックスラッシュによるクォートが
認識されていなかった
----------------------------------------------------------------------
Yash 2.40 (2016-01-09)
= "unset" 組込みは "=" を含む変数名をエラーとせず無視するようにした
= POSIX 準拠モードでは、閉じられていないヒアドキュメントをエラーと
するようにした
* メモリ確保時にメモリサイズがオーバーフローすると未定義動作に陥る
可能性があったのを修正
* 数式展開で浮動小数点数を代入する際にクラッシュしていた
* $PATH 内に相対パスがあるとコマンド検索時にメモリリークすることが
あったのを修正
* ${foo##bar*} で削除される文字列が最長マッチになっていなかった
* ${foo%%*} が空文字列ではなく ${foo} に展開されてしまっていた
* "getopts" 組込みで数字がオプションとして使えなかった
* "command" 組込み経由で "." 組込みを実行し、スクリプトファイルが
見付からない場合、シェルを終了しないようにした
* コマンド置換を含むが、コマンドの単語が空に展開される
単純コマンドの終了ステータスがコマンド置換の終了ステータスに
なっていなかった
* "exec" 組込みでスクリプトファイルが見付からないとききちんと
終了ステータス 127 で終了するようにした
* コマンドの単語を展開する間、パイプが正しく接続されていなかった
* "fg" および "bg" 組込みがジョブ名の出力に失敗した時はエラーとする
ようにした
----------------------------------------------------------------------
Yash 2.39 (2015-08-27)
+ "read" 組込みの新しいオプション: -e, -P, -p
+ 補完スクリプトを追加: passwd, valgrind
- configure の --disable-alias オプション
= "read" 組込みで行編集を有効にするには -e (--line-editing)
オプションを必要とするようにした
= "trap" 組込みコマンドの出力が POSIX.1-2013 に準拠するように修正。
コマンド置換内で実行した場合、サブシェルではなく元のシェルの
トラップを出力する。
= "return" 組込みコマンドが何からリターンすることができるのかに
ついてマニュアルの記述を明確化し、動作も変更。"eval" および "fc"
組込みコマンドを "return" で中断できないようにした。
* 数式展開で "/=" および "%=" 演算子でのゼロ除算でクラッシュ
* "complete" 組込みを -D オプション無しで呼んだ時クラッシュ
* $HOME が設定されていないときにルートディレクトリから
初期化スクリプトを探して実行しようとしないように修正
* "read" 組込みを引数一つで呼び出したとき単語分割で先頭の IFS
空白類が残ってしまっていた
* "read" 組込みの単語分割で、$IFS にバックスラッシュが含まれている
場合にバックスラッシュが正しく処理されていなかった
* allexport オプションが有効な時でも "read" 組込みで配列に代入する
ときエクスポートされていなかった
* "read" 組込みで行編集を使って入力を待ち受ける間にトラップが実行
されてしまっていた
* "set" 組込みの引数の補完を修正
* "git-svn" の補完スクリプトを修正
----------------------------------------------------------------------
Yash 2.38 (2015-06-21)
+ 補完スクリプトを追加: git-rm
= POSIX 準拠モードでは関数定義時にポータブルな関数名しか使えない
ように変更
* 単語分割で IFS 文字の直後のバックスラッシュが欠ける問題を修正
* POSIX 準拠モードでは for ループでポータブルな変数名しか使えない
ように修正
* チルダ展開の後に来る単語の補完を修正
* Git の引数の補完で、移動・コピーしたファイルの名前の補完を修正
* git-commit で非管理ファイルを補完しないように修正
----------------------------------------------------------------------
Yash 2.37 (2015-01-25)
+ 補完スクリプトを更新:
git-checkout (Git 2.1.2), git-push (Git 2.0.1), git-submodule
(Git 2.1.2)
----------------------------------------------------------------------
Yash 2.36 (2014-04-06)
+ 補完スクリプトを追加: git-describe, tig
+ 補完スクリプトを更新: git-branch (Git 1.9.0)
----------------------------------------------------------------------
Yash 2.35 (2013-06-08)
+ '--traceall' オプション
+ 下記コマンドの補完スクリプトを追加:
git-clean, git-grep, git-ls-remote, git-submodule,
git-whatchanged
+ 下記コマンドの補完スクリプトを更新:
git-cherry-pick, git-rebase (Git 1.8.1.4),
ssh, ssh-add, ssh-keygen (OpenSSH 6.2)
= -e オプションが有効な時にシェルを終了させる条件を POSIX.1-2008
の 2013 年版に合わせて変更
= "++" および "--" 演算子を POSIX 準拠モードで使えなくした
= $RANDOM 変数は環境変数を無視して常に乱数を返すようにした
= 履歴ファイルの中にとても長い行があるときでもそれ以降の履歴を
無視しないようにした
= 非常に長いコマンドは履歴ファイルに保存しないようにした
* 構文エラーメッセージを一部修正
* "git" と "ssh" と "rsync" の補完スクリプトを修正
----------------------------------------------------------------------
Yash 2.34 (2013-02-23)
+ "test" 組込みの演算子追加: =~, -o (単項)
+ 下記コマンドの補完スクリプトを追加:
configure, git-name-rev, git-request-pull, make, rsync
= .yash_profile や .yashrc で構文エラーまたは展開エラーになった時
対話シェルでなくてもシェルを終了させないようにした
= 行編集で、上書きした文字をバックスペースで戻せるようになった
= 行編集で、バックスペースの度に undo 履歴を保存しないようにした
* "git" の補完の修正
----------------------------------------------------------------------
Yash 2.33 (2012-10-27)
= "help" 組込みの出力を内蔵の説明文に変更
= コマンドの構文エラーに関する一部のエラーメッセージを変更
= いくつかの組込みコマンドで構文エラーをより厳密にチェックする
ようになった
* "set" 組込みの引数の構文が間違っているとき、POSIX の規定に従い
シェルを終了させるように修正
----------------------------------------------------------------------
Yash 2.32 (2012-09-22)
+ Man page および HTML マニュアル (英語および日本語)
= "help" 組込みは man page の内容を出力するように変更
* "git" の補完の修正
----------------------------------------------------------------------
Yash 2.31 (2012-06-24)
+ 拡張チルダ展開でディレクトリスタックのインデックスの補完に対応
+ "complete" 組込みに --dirstack-index オプション追加
+ "svn" バージョン 1.7 の補完に対応
* "git", "tar", "su" の補完の修正
----------------------------------------------------------------------
Yash 2.30 (2012-02-04)
* リダイレクトのファイル名補完を修正
+ 下記コマンドの補完スクリプトを追加:
svn, git, gitg, gitk, and gitx.
* 補完スクリプトの細かい修正
----------------------------------------------------------------------
Yash 2.29 (2011-10-15)
+ エイリアスの値に改行を入れられるようになった
* 空の配列を "typeset" 組込みで表示しようとしたときに不正メモリ
アクセスしていた
* 関数の中身が (...) の形式の複合コマンドとして定義されているとき
コマンドを正しくサブシェルで実行するように
* 行編集で、undo コマンドは編集中の履歴項目でのみ使えるようにした
----------------------------------------------------------------------
Yash 2.28 (2011-08-20)
= 対話シェルで、メールチェックはジョブ変化の報告の前に行うように
なった
* 数式展開で、評価すべからざる式を評価していることがあった
* "array" 組込みで、-d オプション使用時に正と負のインデックスを混ぜ
ると誤った要素を削除していた
* 実行するコマンドが見付からなかったとき誤って EXIT トラップを実行
していた
* 最後のコマンドがリダイレクトされていたとき EXIT トラップもそのリ
ダイレクトで実行されてしまうことがあった
* 配列の代入を伴う "exec" 組込みで配列の値を正しく export するよう
にした
* ${#@} が配列の要素の長さの配列に正しく展開されていなかった
* 整数列へのブレース展開で無限ループすることがあった
* "ssh" コマンドの補完で設定ファイルの読み込みを修正
* "ln", "mv" コマンドの補完で -T オプションに対応
* "trap" 組込みの補完で EXIT の補完に対応
----------------------------------------------------------------------
Yash 2.27 (2011-05-16)
* 細かいバグ修正
+ 下記コマンドの補完スクリプトを追加:
awk, chsh, gawk, nawk, pgawk, scp, sftp, ssh-add, ssh-agent,
ssh-keygen, su, sudo, sudoedit, and useradd.
* "set" 組込みと "tar" コマンドの補完スクリプトを修正
----------------------------------------------------------------------
Yash 2.26 (2011-02-17)
+ "return" 組込みの新しいオプション: -n (--no-return)
= 英語のエラーメッセージを書き直した
= シェルオプションの名前の扱いを一般化した
. オプション名の大文字・小文字を区別しなくなった
. オプション名に含まれる英数字以外の文字を無視するようにした
. オプション名に "no" を付けることで有効・無効を逆転できるように
した
= POSIX 準拠モードでは "case foo in (esac) bar; esac" をエラーに
するようになった
= 対話シェルでは noexec オプションを無視するようになった
= 新着メール通知はメールボックスファイルが空のときは表示しないよう
にした
= "printf %c ''" は "printf %c" と同様に何も出力しなくなった
= "complete" 組込みを -A または -R オプション付きで呼び出した場合、
-f オプションで生成されるファイル名候補についてはディレクトリ名
部分を除いてパターンマッチングを行うように
* '=' を含む関数名を typeset および unset 組込みに指定できるように
した。(-f オプション指定時)
* SIGINT で中断された反復実行の終了ステータスを修正
+ 下記コマンドの補完スクリプトを追加:
bsdtar, eview, evim, gex, gnutar, gtar, return, rgview, rgvim,
rview, rvim, slogin, ssh, tar, and which.
* 下記コマンドの補完スクリプトの修正:
bash, chmod, dash, less, mksh, set, sh, and umask.
----------------------------------------------------------------------
Yash 2.25 (2010-11-21)
= 補完候補リストにおいてオプションは大文字小文字区別無くまとめる
ようにした
= 補完関数を実行中は $IFS 変数の値をデフォルトに戻すように
+ 下記コマンドの補完スクリプトを追加:
bash, csplit, dash, diff, ed, egrep, env, ex, expand, fgrep,
file, find, fold, getconf, grep, gview, gvim, gvimdiff, head,
iconv, id, join, ksh, less, ln, locale, man, mesg, mkdir, mkfifo,
mksh, more, mv, newgrp, nice, nl, nohup, od, paste, patch,
pathchk, pr, ps, renice, rm, rmdir, sed, sh, sort, split, stty,
tail, tee, time, touch, tr, uname, uniq, vi, view, vim, vimdiff,
wc, who, xargs, and yash.
* 下記コマンドの補完スクリプトの修正:
cat, cd, chgrp, chmod, chown, cmp, comm, cp, crontab, cut, date,
df, du, exec, ls, and set.
----------------------------------------------------------------------
Yash 2.24 (2010-10-03)
+ "." 組込みの新しいオプション: -L
+ "command" 組込みの新しいオプション: -a, -f, -k
- "command" 組込みの廃止されたオプション: -B
= FreeBSD で全ての種類のシグナルが扱えるように configure を修正
= 新しい補完メカニズム ("complete" 組込みの動作を変更。補完設定の
$YASH_LOADPATH からの自動読み込み)
+ 下記コマンドの補完スクリプトを追加:
basename, bg, cat, chgrp, chmod, chown, cmp, comm, command, cp,
crontab, cut, date, df, du, export, popd, pushd, readonly, type,
".", and "[".
= 下記コマンドの補完スクリプトを書き直し:
alias, array, bindkey, break, cd, complete, continue, dirs,
disown, echo, eval, exec, exit, fc, fg, getopts, hash, help,
history, jobs, kill, ls, printf, pwd, read, set, suspend, test,
trap, typeset, ulimit, umask, unalias, unset, and wait.
- "return" 組込みの補完スクリプトを削除
= 補完候補リストで短いオプションが長いオプションの前に来るように
並び順を変更
* 存在しないファイルへのシンボリックリンクを正しく補完できるように
* 補完機能のその他の修正
* リダイレクト内のパラメータ展開がエラーになったときに不正メモリ
アクセスしていた
----------------------------------------------------------------------
Yash 2.23 (2010-07-29)
* コマンドライン補完の途中ではトラップを実行しないようにした
(予期せぬコマンドの実行により表示が乱れるのを防ぐため)
* "-o notify" オプションが有効な時、候補生成関数を使用した補完の
最中にジョブの状態を出力しようとして不正メモリアクセスしていた
* "-o verbose" オプションが有効な時でも、補完設定の自動読み込み時は
読み込んだ内容を出力しないようにした
* "kill" 組込みの補完スクリプトを修正
----------------------------------------------------------------------
Yash 2.22 (2010-07-25)
+ "test" 組込みの演算子追加: -G, -O, -N
+ $YASH_COMPPATH からの補完設定の自動読み込み
* サブシェルが生成された直後にシグナルを受信したとき誤ってそれを
無視していたのを修正
* その他のバグ修正
+ 下記コマンドの補完スクリプトを追加:
alias, array, bindkey, break, cd, complete, continue, dirs,
disown, echo, eval, exec, exit, fc, fg, getopts, hash, help,
history, jobs, kill, ls, printf, pwd, read, return, set, suspend,
test, trap, typeset, ulimit, umask, unalias, unset, wait.
----------------------------------------------------------------------
Yash 2.21 (2010-06-18)
+ 行編集での補完機能
= 対話シェルでは、それぞれのコマンドごとに $LINENO を 1 にリセット
するようにした
* "function" キーワードが "command -v" で認識されていなかった
* 対話シェルが SIGINT を受け取った後の復旧処理を修正
* シェルへの入力を扱う関数を書き直し (いくつかのバグ修正含む)
----------------------------------------------------------------------
Yash 2.20 (2010-05-16)
+ "function" キーワードによる関数の定義
= "test" 組込みの "-nt", "-ot" 演算子による比較では存在しない
ファイルをより古いとみなすようになった (Korn shell に倣う)
= 行編集: いくつかの編集コマンドの名前を変更
vi-change-all -> vi-change-line
vi-yank-and-change-all -> vi-yank-all-change-line
vi-append-end -> vi-append-to-eol
* 行編集: clear-and-redraw-all コマンドが正しく動いていなかった
----------------------------------------------------------------------
Yash 2.19 (2010-02-14)
+ FreeBSD でも "ulimit" 組込みが使えるようになった
+ メールチェックで、可能ならナノ秒単位でメールファイルをチェック
するようにした
+ 行編集: 新しいコマンドの追加:
oldest-history-bol, newest-history-bol, return-history-bol,
prev-history-bol, next-history-bol,
beginning-search-forward, beginning-search-backward
= ファイル名パターンマッチングを高速化
= 行編集: 履歴検索中の accept-line コマンドは、検索結果が見つから
ないときは失敗するようになった
= 行編集: 以下のコマンドはカーソルを行頭に移動しないようになった
oldest-history, newest-history, return-history,
prev-history, next-history
カーソルを行頭に移動する古い挙動は、名前が "-bol" で終わる
新しいコマンドによって得られる
* 配列の代入のトレースの出力がおかしかったのを修正
* 行編集: vi-edit-and-accept コマンドでカウントを指定できるように
* 行編集: emacs モードでの search-again-forward/backward コマンドの
後のカーソル位置を修正
----------------------------------------------------------------------
Yash 2.18 (2009-12-27)
+ "test" 組込み: 文字列比較演算子追加 (==, ===, !==, <, <=, >, >=)
+ "test" 組込み: -nt, -ot 演算子で可能ならナノ秒単位でファイルの
更新日時を比較するように
+ "cd", "pushd" 組込みに --default-directory オプション追加
+ "pushd" 組込みに --remove-duplicates オプション追加
+ 右プロンプトとスタイラープロンプト
+ --le-alwaysrp オプション
= $PS1 と $PS2 のフォント変更用エスケープシーケンスの解釈を変更
= $PS3 をデフォルトで初期化しないように
= $PS4 でも $PS1/$PS2 と同様にエスケープシーケンスを解釈するように
= "echo"/"printf" 組込みでナル文字を出力できるように
* 行編集: $LINES と $COLUMNS が無視される場合があった
* 行編集: いくつかの端末での文字の色を修正
----------------------------------------------------------------------
Yash 2.17 (2009-12-04)
+ --le-visiblebell オプション
+ "test" 組込み: バージョン比較演算子 (-veq, -vne, -vgt, -vge,
-vlt, -vle)
+ 行編集: "eof" コマンド
= "typeset" 組込みをオペランドなしで実行したとき、-g オプションが
なければローカル変数のみ表示するように
= "typeset" 組込みで関数を表示させるときの出力を整形
= POSIX 準拠モードでないときは、コマンド置換やコマンドリダイレクト
の中のコマンドもあらかじめ先に解析しておくようになった
* パラメータ展開 "${#}" が構文エラーになっていた
* サブシェルで "wait" 組込みを実行すると誤って親プロセスでない
プロセスを待とうとすることがあった
* 行編集の vi-replace-char コマンドが壊れていた
* その他様々なバグ修正
----------------------------------------------------------------------
Yash 2.16 (2009-10-17)
+ --curbg と --curstop オプション
= --curasync オプションはデフォルトでオンに
= 空の while/until ループの終了ステータスを変更
= "return" および "exit" 組込みで 256 以上の終了ステータスを使える
ように
= "echo" 組込みの八進数エスケープは \0 で始まるものしか解釈しない
ように
* 非対話シェルで "command" 組込みで特殊組込みを実行したとき構文
エラーになるとシェルが終了してしまっていたのを修正。
* EXIT トラップ設定時のシェルの終了ステータスを修正
* "read" と "getopts" 組込みで --allexport オプションが利いて
いなかった
* "getopts" 組込みのセグメンテーションフォルトその他エラー修正
* 行編集の vi-replace-char コマンドが不正メモリアクセスを
引き起こすことがあった
* 行編集の emacs-just-one-space コマンドの結果がおかしかった
----------------------------------------------------------------------
Yash 2.15 (2009-09-07)
+ 対話シェルのコマンドを SIGINT で中断できるように
+ パス名展開でのブラケット記法に完全に対応した (libc の正規表現の
実装に依存)
= シェルがセッションリーダーのとき "suspend" 組込みでサスペンドする
には -f オプションを付けないといけないようにした
= $YASH_LE_TIMEOUT 変数をデフォルトで設定するのをやめた
= ジョブ制御有効なシェルがバックグラウンドで起動されたら停止する
ように
= ジョブ制御有効なシェルはデフォルトでは SIGTTOU を無視しないように
= --nocaseglob がオンでも "${var#xxx}" などのパラメータ展開の
マッチングでは大文字小文字を区別するように
* リダイレクトにおけるパス名展開を修正
* 対話シェル起動時に無視されていたシグナルを "trap" 組込みで
デフォルトのシグナルハンドラに変更できなかった
* 組込みコマンドが誤ってシグナルに割り込まれるのを修正
* エイリアス置換の後に複合コマンドなどが正しく解析されるよう修正
* その他様々なバグ修正
----------------------------------------------------------------------
Yash 2.14 (2009-08-07)
+ "bindkey" 組込みの -l オプション
+ 配列のインデックスに負数を指定できるようになった
= "cd /.." の後 $PWD は /.. ではなく / にするように
= "command -vb" はキーワード・エイリアス・関数を表示しないように
= ほとんどの組込みにおいて、標準出力への書き込みがエラーになったら
メッセージを吐いて非 0 で終了するようにした
= "pwd", "times" 組込みに余計な引数を与えたときエラーにするように
= POSIX 準拠モードでないとき特殊組込みでの変数代入がエラーに
なってもシェルを終了しないように
* 作業ディレクトリが / のとき "cd //" できなかった
* yashrc の中で "bindkey" コマンドを使うと不正メモリアクセスが
発生していた
* $PATH にない通常の組込みコマンドが "command -vb" で検索
できなかった
* "dirs" 組込みに引数を与えたとき無限ループしていた
* "ulimit" 組込みが -c, -d オプションを受け付けていなかった
* POSIX 準拠モードでは "fg" 組込みは最大一つしか引数を受け付けない
ように (ヘルプにはそう書いてあったが、実際にはそうなって
いなかったのを修正)
----------------------------------------------------------------------
Yash 2.13 (2009-07-28)
+ "history" 組込み
+ "eval", "break", "continue" 組込みの -i オプション
+ コマンドが見つからないとき $COMMAND_NOT_FOUND_HANDLER 変数の値を
実行するように
- --autocd オプション
= 対話シェルで "return" 組込みが関数外で使われた時、終了ステータス
1 を返すように
= コマンドの検索・実行を修正
* $PROMPT_COMMAND が設定されているとき、停止中のジョブがあると
"exit" を二回やってもシェルを終了できなかった
* $PROMPT_COMMAND が設定されていると "notifyle" オプションが正しく
動作していなかった
* 行編集で redo がうまく動かなくなっていた
* 行編集でトラップ処理のあとコマンドラインが再描画されていなかった
* 行編集で vi-edit-and-accept コマンドについていくつかのバグ修正
----------------------------------------------------------------------
Yash 2.12 (2009-07-18)
+ Emacs 風行編集
+ "bindkey" 組込み
+ $PROMPT_COMMAND は配列でもよいように
+ 作業ディレクトリ変更後に $YASH_AFTER_CD を実行するように
= "fg", "bg" 組込みは常に SIGCONT を対象ジョブに送信するように
= "fg", "bg", "disown", "wait" 組込みの後で "exit" しようとしたとき
も停止中のジョブに関する警告を出すように
* vi 風行編集で、30 回目の yank の後誤ったテキストが put されていた
* vi 風行編集で、カーソルが行頭にあると "s" コマンドが使えなかった
----------------------------------------------------------------------
Yash 2.11 (2009-06-22)
+ "--histspace", "--le-noconvmeta" オプション追加
+ $HISTRMDUP 変数に対応
+ $YASH_LE_TIMEOUT 変数に対応
+ kill 組込みの -l オプションでシグナル名をオペランドとして
渡せるように
= "--le-convmeta" オプションはオンオフ型オプションに
= ログインシェルでは "$-" 特殊パラメータに "l" フラグを含めるように
* 空の case 文 "case i in (*) esac" は常に終了ステータス 0 を返す
ように
* "-f" オプション有効時、クォートされた単語に余計なバックスラッシュ
がくっついていた
* vi 風行編集の v コマンドで不正メモリアクセスしていたのを修正
----------------------------------------------------------------------
Yash 2.10 (2009-05-27)
+ 行編集におけるコマンド履歴検索
= 内容のない行は履歴に入れないように
= vi 風行編集で、"cw" と "cW" が実際の vi と同様に振る舞うように
* 行編集なしで configure したとき "notifyle" オプションを設定しよう
とするとセグフォが発生していた
* 行編集で、編集した履歴をアンドゥしたときカーソル位置が
正しくなかった
* 行編集中の不正メモリアクセスのいくつかの修正
----------------------------------------------------------------------
Yash 2.9 (2009-05-10)
+ 対話モードにおける行編集機能
x 行編集の実装がまだ途中
+ 同じ履歴ファイルを使用する複数のシェルのインスタンス同士で
履歴を共有するように
- "history" 組込みを廃止
= 非 ASCII なアルファベットも変数名に使えるように
= 入れ子のパラメータ展開は必ずブレースでくくらないといけないように
= "help" 組込みで、指定したコマンドが見つからなければ
エラーを出すように
* 数式展開における小数演算が正しくないことがあった
* 数式展開で下線で始まる識別子がエラーになっていた
* "${#" で始まるパラメータ展開の解析を修正 (例: "${#=x}")
* "pwd" 組込みのヘルプメッセージを修正
----------------------------------------------------------------------
Yash 2.8 (2009-04-18)
+ 変化量を指定できるブレース展開: {a..b..c}
+ "command" 組込みで -B, -b オプションが -v, -V オプションと同時に
使えるようになった
= POSIX.1-2008 に準拠
. "read" 組込みは入力の末尾の空白類を常に削除するように
. チルダ展開の結果を単語分割・パス名展開しないように
. "pwd -P" で $PWD 変数を更新しないように
. "cd -L foo/.." は、ディレクトリ "foo" が存在しないときエラーに
. "command" 組込みで -p オプションが -v, -V オプションと同時に
使えるようになった
. POSIX 準拠モードでは、ジョブ制御中でも非同期コマンドはすべて
SIGINT と SIGQUIT を無視するように
* fc 組込みで編集したコマンドを実行する際、$? 変数に fc で起動した
エディタの終了ステータスが代入されてしまっていた
* $IFS の中にバックスラッシュ、コンマ、またはブレースを入れても
正しく単語分割できなかった
* パス名展開において、ディレクトリの検索権限だけが必要な時でも、
読み込み権限がなければ展開に失敗していた
* シェルが起動するコマンドのシグナルマスクは、シェルのマスクを
受け継ぐようにした (トラップしたシグナルのマスクを除く)
* "autocd" オプション有効時 "command" 組込みにコマンドとして
ディレクトリ名を与えたときの動作を修正
----------------------------------------------------------------------
Yash 2.7 (2009-03-02)
+ ${array[index]:=value} で配列要素への代入が可能に
+ ヒアストリングのための新しいリダイレクト演算子 "<<<"
+ パイプを開く新しいリダイレクト演算子 ">>|"
- ループパイプ機能廃止
= シェルの起動時に $IFS 変数を常にデフォルト値で初期化するように
* "echo" および "printf" 組込みでエラー時にメッセージを出すように
* ファイル名の先頭にあるクォートされたピリオドがファイル名展開で
正しくマッチしていなかった
----------------------------------------------------------------------
Yash 2.6 (2009-02-11)
+ fc 組込みに -q オプション追加
+ 複合コマンドの内容は空でもよいように
* "alias -p" でハイフンを適切にエスケープするように
* POSIX 準拠モードの for 文で、識別子の直後のセミコロンをエラーに
するように
* 複合コマンドの直後でグローバルエイリアスが使えなかった
* "-o notify" オプションが有効な時 "fg" および "wait" 組込みが
不正メモリアクセスを引き起こしていた
----------------------------------------------------------------------
Yash 2.5 (2009-01-16)
= シェルが使用している FD のリダイレクトはエラーにするように
* いくつかのリダイレクト構文エラーを見逃していた
* "sig.y" テストが間違っていた
* リダイレクト付きの "exec" コマンドがリダイレクト付きの { } 括弧の
中にある場合、括弧に対するリダイレクトが残ったままになっていた
* for 文の識別子の直後のコメントの解析エラーを修正
----------------------------------------------------------------------
Yash 2.4 (2008-12-23)
= "jobs" 組込みの -p オプションに対応する長いオプションを
--pid-only から --pgid-only に変更
* SIGCHLD, SIGINT, SIGTERM, SIGQUIT, SIGTSTP, SIGTTOU のトラップが
誤って無視されることがあった
* SIGINT, SIGTERM, SIGQUIT, SIGTSTP, SIGTTOU のシグナルハンドラが