shebang bash version

# mac 에서 .sh 실행시 local -A (delclare -A) 옵션에서 다음과 에러가 발생한다.
line 5: declare: -A: invalid option
declare: usage: declare [-afFirtx] [-p] [name[=value] ...]

# 원인은 .sh 에서 shebang 으로 #!/bin/bash 를 사용하는데 bash 버전이 너무 옛날거라 local -A 옵션이 지원되지 않는다.
# bash 실행시 /opt/homebrew/bin/bash 가 실행되지만 
# 일반적으로 .sh 에서는 #!/bin/bash 으로 많이 사용한다.
type -a bash
bash is /opt/homebrew/bin/bash
bash is /usr/local/bin/bash
bash is /bin/bash

# 두 bash 버전차이가 있었다.
/bin/bash --version; echo "-----"; /opt/homebrew/bin/bash --version

# /bin/bash 는 brew 로 업그레이드 되지 않는다.
# 그리고 /bin/bash 는 x86_64, arm64 환경에서 동작하는 바이너리다. 
file /bin/bash
/bin/bash: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64e:Mach-O 64-bit executable arm64e]
/bin/bash (for architecture x86_64):    Mach-O 64-bit executable x86_64
/bin/bash (for architecture arm64e):    Mach-O 64-bit executable arm64e

# shebang 으로 다음과 같이 명시하면 현재 환경에 맞은 bash 로 실행할 수 있다.
#!/usr/bin/env bash

comments:

댓글 쓰기