dateコマンド の出力をカスタマイズしていると phpenv や rbenv の一時ディレクトリが正しく作成されない

状況

dateコマンドを自作のコマンドに置き換えた(パスの優先度が上位の場所に date というシェルスクリプトを置いた)とし、その内容が以下であったとする。

#!/usr/bin/env bash
set -euo pipefail

if [[ "$(uname)" == "Darwin" ]]; then
  LC_TIME=ja_JP.UTF-8 /bin/date "+%Y年 %m月 %d日 %A %H:%M:%S %Z"
fi

exit 0

この状態で $ phpenv install X.Y.Z$ rbenv install X.Y.Z を実行すると、この dateコマンド が原因でエラーになる。

結論(どうするか)

  • dateコマンド がデフォルトの状態で phpenv や rbenv を実行すればいい

補足

  • 現時点で macOS では dateコマンド に不具合がある(ja_JP.UTF-8/bin/date を実行すると #午後 と表示される)ため、dateコマンド を自分好みにカスタマイズして置いている人も多いかもしれないが、一時的にパスが通っている場所から外す
  • rbenv にてエラーログを流し読みするとライブラリ等が不足しているように見えるかもしれないが、精読すると dateコマンド の出力が半角スペースで切られていることが原因である*1ことが分かる
  • macOS の #午後 問題は早く直してほしい*2

phpenv のエラーログの例

[Info]: Done
head: /tmp/php-build.8.4.7.2025年: No such file or directory
head: 05月: No such file or directory
head: 15日: No such file or directory
head: 木曜日: No such file or directory
head: 09:18:00: No such file or directory
head: JST.log: No such file or directory

*1:それにより一時ディレクトリが正しく作成できない

*2:Sequoia 15.5 でも直ってなかった

Powered by はてなブログ