Skip to content

fix(dev.sh): bash 3.2 uyumlu lowercase — macOS'ta './dev.sh up' bad substitution ile açılmıyor#683

Merged
lilyshen0722 merged 1 commit into
Team-Commonly:mainfrom
alptekinkekilli:fix/devsh-bash32-compat
Jul 19, 2026
Merged

fix(dev.sh): bash 3.2 uyumlu lowercase — macOS'ta './dev.sh up' bad substitution ile açılmıyor#683
lilyshen0722 merged 1 commit into
Team-Commonly:mainfrom
alptekinkekilli:fix/devsh-bash32-compat

Conversation

@alptekinkekilli

Copy link
Copy Markdown
Contributor

Sorun

is_truthy_env_value() ${1,,} (bash 4+ lowercase expansion) kullanıyor. macOS'un /bin/bash'i hâlâ 3.2.57 (Apple lisans nedeniyle güncellemiyor) ve dev.sh shebang'i #!/bin/bash. Sonuç: temiz bir macOS'ta ./dev.sh up runtime'da ${1,,}: bad substitution verip çıkıyor, backend hiç ayağa kalkmıyor.

Yeni bir makinede kurulum sırasında yakalandı (parse temiz olduğu için sadece up yolunda, fonksiyon çağrılınca patlıyor — bu yüzden fark edilmemiş).

Fix

Dosyadaki tek bash4-izm buydu (grep ile doğrulandı). tr ile taşınabilir hale getirildi.

#!/usr/bin/env bash yeterli değil — Homebrew bash'i olmayan makinede env yine 3.2'yi bulur. Bu fix stock macOS bash'te de çalışır, PATH/shebang'e bağımlı değil.

Kanıt (bash 3.2.57)

eski:  ${1,,}  ->  bad substitution
yeni:  TRUE/true/YES/On/1 -> truthy · false/NO/0/boş -> falsy   (davranış korundu)
bash -n dev.sh -> parse OK

…ile açılmıyordu

is_truthy_env_value() ${1,,} (bash 4+ expansion) kullanıyordu. macOS /bin/bash hâlâ
3.2.57 olduğu için './dev.sh up' runtime'da '${1,,}: bad substitution' verip çıkıyor,
backend hiç ayağa kalkmıyordu. Dosyadaki TEK bash4-izm buydu; tr ile taşınabilir hale
getirildi (shebang/PATH'e bağımlı değil, stock macOS'ta da çalışır).

Kanıt (bash 3.2.57):
- eski: ${1,,} -> 'bad substitution'
- yeni: TRUE/true/YES/On/1 -> truthy; false/NO/0/boş -> falsy (davranış korundu)
- bash -n dev.sh: parse OK

Not: '#!/usr/bin/env bash' yeterli DEĞİL — Homebrew bash'i olmayan makinede yine 3.2 bulunur.

@lilyshen0722 lilyshen0722 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Confirmed: macOS ships bash 3.2 as /bin/bash and ${1,,} is bash-4+ — this was breaking './dev.sh up' on every clean Mac, which is our self-hosting front door. The tr fix is exactly right and the comment explains why it must stay portable. Thank you for catching what our own CI (Linux) structurally couldn't.

@lilyshen0722
lilyshen0722 merged commit 9031141 into Team-Commonly:main Jul 19, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants