自作シェルの進捗とBashの細かい話(2024年7月27日)

Sat Jul 27 10:14:16 JST 2024 (modified: Sat Jul 27 10:43:44 JST 2024)
views: 1908, keywords:自作シェル, 寿司シェル, sush

 自作シェルの開発の進捗報告なんですけど、前回の報告が6月9日でどんだけ報告さぼってたんか。

6月以降のリリース

 6月20日から、真面目にGitHub上にリリースを残すようにしました(ここ)。今日までのリリースはこんな感じ。

  • v0.3.5: なにも入力しないでタブ補完しようとしたら、ヒストリーを一覧表示するようにした。
  • v0.3.6: 改行のあるコマンドのヒストリーが~/.sush_historyにきれいに保存されるように細工。
  • v0.3.7: 拡張グロブがファイルパスの展開で使用できるように、グロブを自作のものに切り替え。
  • v0.3.9: バグフィックス
  • v0.4.0:
    • Ctrl+Zでフォアグラウンドプロセスを停止できるようにした。
    • jobs, wait, bgを雑に実装
  • v0.4.4: fgコマンドの実装(必要最低限)
  • v0.4.5: GNOME-terminalのタイトルにプロンプトの内容を表示できるようにした。
  • v0.4.6: evalの実装
  • v0.4.7: unsetの実装
  • v0.4.9: ${変数:-代替の単語}の実装(:=:?:+も)
  • v0.4.11: Bashの変な挙動を模倣
    • 変な挙動: 変数の参照において、たとえばecho ${BASH_VERSION-aaaaa}など-の後ろになにか書いてもエラーを起こさない
  • v0.5.0: echo ${変数:-"文字列"}echo ${変数:="文字列"}について、文字列途中に改行がある場合、Bashだと出力が変わる挙動を再現
    • :-の場合は改行がそのまま出力され、:=の場合は改行がなくなる(後述)。
  • v0.5.2: shoptextglobを実装
  • v0.5.3: Bashのオプション-x-vの実装
  • v0.5.4: Bashのオプション-eの実装
  • v0.5.5: Bashのオプション-o pipefailの実装
  • v0.5.6: $(( ))と、そのなかでの四則演算の実装

v0.5.0の挙動について

 リリースにもありますが、次のような違いが出ます。

$ unset A
   $ echo ${A:-"aaa
   bbb"}
   aaa          #改行が残る
   bbb
   $ unset A
   $ echo ${A:="aaa
   bbb"}
   aaa bbb      #改行が残らない

:-の場合は"aaa改行bbb"がそのままechoの引数として置き換わるので、ダブルクォートの中の改行として改行がそのまま出力されます。一方:=の場合は、一度変数Aaaa改行bbbが代入されてから評価されるので、ダブルクォートが消失して、改行が単語の切れ目としてスペースに代わります。・・・実装するまで知らなかったよ。細かい・・・

現場からは以上です。こんなにひとりで突っ走ってたら誰も手伝ってはくれんよなあ・・・。自分の弱点。

ノート   このエントリーをはてなブックマークに追加 
 

prev:いろいろ報告 next:自作シェルで浮動小数点の計算ができるようにしたった

やり散らかし一覧

記事いろいろ