SUA (Interix 6.1) 64bitでbash 4.2を動かす

 SUAには標準ではbashがない。
 古~いバージョンならバイナリも配布されていたらしいものの、それはちょっと……ということで、ソースから最新版をビルドしたいわけだったのだが、bash 4.1のときはあれこれ苦労したあげく、64bit環境であることがよくないのか、なぜか$(…)形式の展開だけsyntax errorになる(`……`形式は動くのに)という不可解な動作をするバイナリしか作れなかった。しかし最近出たbash 4.2ではあっさりと動くようになっていた。
 わずかにひっかかるのは次の2点。

  1. 相変わらずconfigureでシステム名を認識せず、「configure: error: cannot guess build type; you must specify one」と言われるので、support/config.guessとsupport/config.subを最新版(config.guess/config.sub)に入れ替える。
  2. ログインシェルとして使うとき、そのままだとlessなどがWARNING: terminal is not fully functionalと警告を出してマトモに動こうとしない状態になる。bash起動時、環境変数のTERMに空文字列が設定されなければならないところがdumbという文字列が設定されてしまうために/etc/profileのTERMを設定する部分がうまく動いていないのが原因で、ワークアラウンドとしては、起動時のコマンドラインをC:\Windows\posix.exe /u /c /bin/bash -c "TERM= /bin/bash --login -i"のようにする。TERM= と/bin/bashの間にスペースが入っているのに注意。

 まだmake testsで少しエラーは出るのだが、4.1のときの惨憺たる結果に比べれば上出来。

 これで使い慣れたUNIX環境に一歩近づいたわけだが、ただSUAそのものは、全体的に動作がもっさりしている上に、時々ひっかかるように十秒くらい動作を停止するようなときもあり、まだUNIX環境として実用レベルと言いがたいところがある。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください