개요
**Bash(Bourne Again Shell)**는 GNU 프로젝트의 표준 셸. 대부분의 Linux 배포판 기본 셸이며 macOS도 Catalina(2019) 이전까지 기본으로 사용.
- 출시: 1989년
- 개발: Brian Fox (GNU Project)
- auto-suggestions (ble.sh)
기본 문법
# 변수
NAME="world"
echo "Hello, $NAME"
# 조건문
if [ "$1" == "hello" ]; then
echo "안녕!"
elif [ "$1" == "bye" ]; then
echo "안녕히!"
else
echo "모르는 인사"
fi
# 반복문
for i in {1..5}; do
echo "번호: $i"
done
# while
while read line; do
echo "$line"
done < file.txt
# 함수
greet() {
echo "Hello, $1!"
}
greet "Bash"유용한 내장 기능
# 히스토리 검색 (Ctrl+R)
# 이전 명령어 재사용
!! # 직전 명령
!n # n번째 히스토리 명령
!string # string으로 시작하는 최근 명령
# 프로세스 치환
diff <(ls dir1) <(ls dir2)
# 배열
arr=(apple banana cherry)
echo ${arr[0]} # apple
echo ${arr[@]} # 전체
echo ${#arr[@]} # 길이
# 문자열 처리
str="Hello World"
echo ${str,,} # 소문자 변환
echo ${str^^} # 대문자 변환
echo ${str/World/Bash} # 치환.bashrc vs .bash_profile
| 파일 | 실행 시점 |
|---|---|
~/.bash_profile | 로그인 셸 시작 시 |
~/.bashrc | 인터랙티브 비로그인 셸 시작 시 (터미널 열 때) |
~/.bash_logout | 로그인 셸 종료 시 |
→ 일반적으로 설정은 ~/.bashrc에, ~/.bash_profile에서 .bashrc 호출
자동완성 향상
- bash-autosuggestions: ble.sh — fish/zsh 스타일 자동완성을 bash에서 구현
zsh vs bash
| 항목 | bash | zsh |
|---|---|---|
| 기본 셸 | Linux 대부분 | macOS (Catalina+) |
| 자동완성 | 기본 | 강력한 플러그인 생태계 |
| 테마/프롬프트 | 수동 설정 | Oh My Zsh 등 |
| 호환성 | sh 스크립트 표준 | bash 대부분 호환 |