ksh และ bash นั้นแตกต่างกันอย่างสิ้นเชิง แต่ไบนารี bash และ sh นั้นส่วนใหญ่จะเหมือนกัน sh ของ OS X เป็นเวอร์ชันของ bash ที่:
- ได้โหมด POSIXเปิดใช้งาน bash ไม่สอดคล้องกับ POSIX โดยค่าเริ่มต้น
 
- มีพฤติกรรมการเริ่มต้นที่แตกต่างกัน ยกตัวอย่างเช่นไม่ได้อ่าน
sh -l~/.bash_profile/ 
- เปิดใช้งาน xpg_echo เป็นค่าเริ่มต้น ดังนั้น
echoทำหน้าที่เหมือนecho -eและไม่สนับสนุนตัวเลือกใด ๆ 
FCEDIT เริ่มต้นคือ ed ใน sh แต่ EDITOR หรือ ed ใน bash:
$ diff -y --suppress-common-lines -W 80 <(strings /bin/bash) <(strings /bin/sh)
                                      > /bin/bash
${FCEDIT:-${EDITOR:-ed}}              | ${FCEDIT:-ed}
@(#)PROGRAM:bash  PROJECT:bash-86.1   | @(#)PROGRAM:sh  PROJECT:bash-86.1
$ grep -rF '${FCEDIT:-${EDITOR:-ed}}' ~/Code/Source/bash-86.1/
bash-86.1/bash-3.2/builtins/fc.c:#  define POSIX_FC_EDIT_COMMAND "${FCEDIT:-${EDITOR:-ed}}"
bash-86.1/bash-3.2/builtins/fc.def:#  define POSIX_FC_EDIT_COMMAND "${FCEDIT:-${EDITOR:-ed}}"
แหล่งที่สามารถดาวน์โหลดได้จากhttp://opensource.apple.com/tarballs/
จากคนทุบตี :
  หากมีการเรียกใช้ bash ด้วยชื่อ sh มันจะพยายามเลียนแบบพฤติกรรมการเริ่มต้นของเวอร์ชันประวัติของ sh อย่างใกล้ที่สุดเท่าที่จะทำได้ในขณะที่สอดคล้องกับมาตรฐาน POSIX เช่นกัน
มันไม่ได้จำลองลักษณะอื่น ๆ ของกระสุน Bourne ดั้งเดิม
เชลล์ Bourne ดั้งเดิมไม่ได้รับการดูแลรักษาอีกต่อไปและตอนนี้ / bin / sh ได้ถูกกำหนดให้เป็นเชลล์อื่นที่ตรงกับ POSIX sh ของ OS X อนุญาตให้ใช้bashismsที่ไม่จำเป็นต้องทำงานกับ / bin / sh บนแพลตฟอร์มอื่น ๆ (เช่น dash บน Ubuntu)