개요

**Bash(Bourne Again Shell)**는 GNU 프로젝트의 표준 셸. 대부분의 Linux 배포판 기본 셸이며 macOS도 Catalina(2019) 이전까지 기본으로 사용.


기본 문법

# 변수
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 호출


자동완성 향상


zsh vs bash

항목bashzsh
기본 셸Linux 대부분macOS (Catalina+)
자동완성기본강력한 플러그인 생태계
테마/프롬프트수동 설정Oh My Zsh 등
호환성sh 스크립트 표준bash 대부분 호환

관련 항목