Shell 비교 가이드

🏷️ 정보

Bash (Bourne Again Shell)

가장 널리 사용되는 쉘입니다. POSIX 호환성을 제공하며 명령어 히스토리 지원, 작업 제어 기능, 별칭 지원, 기본적인 스크립팅 기능을 갖추고 있습니다. 대부분의 리눅스 배포판에서 기본 쉘로 채택하고 있으며, 비로그인 쉘용 설정은 ~/.bashrc, 로그인 쉘용 설정은 ~/.bash_profile, 명령어 히스토리는 ~/.bash_history 파일에 저장됩니다.

주요 특징

설정 파일

Zsh (Z Shell)

Zsh는 Bash를 기반으로 개선된 현대적인 쉘입니다. 강력한 자동 완성 시스템과 스펠링 교정 기능을 제공하고, 향상된 변수 및 배열 처리 능력을 갖추고 있습니다. Oh My Zsh를 통한 플러그인 및 테마 지원과 Git 통합 기능이 특징적이며, macOS Catalina 이후부터는 기본 쉘로 사용되고 있습니다. 주요 설정은 ~/.zshrc 파일에서 관리하고, 명령어 히스토리는 ~/.zsh_history에, Oh My Zsh 관련 설정은 ~/.oh-my-zsh 디렉토리에 저장됩니다.

주요 특징

설정 파일

Fish (Friendly Interactive Shell)

Fish는 사용자 친화성에 중점을 둔 현대적인 쉘입니다. 문법 강조 기능과 웹 기반 설정 인터페이스를 제공합니다. 지능적인 자동 완성과 기본 설정만으로도 뛰어난 사용성을 보여주며, 내장된 도움말 시스템을 갖추고 있습니다. 다만 비POSIX 호환으로 독자적인 문법을 사용하는 특징이 있습니다. 주요 설정 파일은 ~/.config/fish/config.fish이며, 명령어 히스토리는 ~/.local/share/fish/history에 저장됩니다.

주요 특징

설정 파일

Ksh (Korn Shell)

Ksh는 AT&T 벨 연구소에서 개발된 쉘입니다. 강력한 스크립팅 기능을 제공합니다. POSIX 호환성과 함께 배열 지원, 내장 산술 연산, 확장된 정규표현식 지원 등의 기능을 갖추고 있으며, 성능 최적화가 잘 되어 있습니다. 주요 설정은 ~/.kshrc 파일에서 관리하고, 명령어 히스토리는 ~/.ksh_history에 저장됩니다.

주요 특징

설정 파일

Sh (Bourne Shell)

유닉스의 원조 쉘로 현대 쉘들의 기반이 되었습니다. 최소한의 기본 기능만을 제공하지만 높은 호환성과 가벼운 시스템 리소스 사용이 장점이며, 주로 스크립트 실행에 사용되고 POSIX 표준의 기반이 되었습니다. 주요 설정 파일은 ~/.profile입니다.

주요 특징

설정 파일

쉘 스크립팅 비교

변수 선언


<!-- -->
# Bash/Zsh/Ksh
variable="value"


<!-- -->
# Fish
set variable "value"

조건문


<!-- -->
# Bash/Zsh/Ksh
if [ condition ]; then
    command
fi


<!-- -->
# Fish
if condition
    command
end

반복문


<!-- -->
# Bash/Zsh/Ksh
for i in {1..5}; do
    echo $i
done


<!-- -->
# Fish
for i in (seq 1 5)
    echo $i
end

선택 가이드

쉘 선택 시에는 용도에 따라 고려하시면 됩니다. Bash는 범용적인 사용이나 스크립트의 호환성이 중요할 때, 시스템 관리 작업이 주 용도일 때 선택하시면 좋습니다. Zsh는 개발 작업이 주 용도이거나 커스터마이징이 필요할 때, Git 작업이 많을 때 적합합니다. Fish는 초보자가 사용하거나 설정 없이 바로 사용하고 싶을 때, 현대적인 기능이 필요할 때 권장됩니다. Ksh는 고급 스크립팅이 필요하거나 유닉스 시스템에서 작업할 때, 성능이 중요할 때 선택하시면 됩니다. Sh는 최소한의 기능만 필요하거나 스크립트의 최대 호환성이 필요할 때, 시스템 리소스가 제한적일 때 사용하시면 적합합니다.재시도

Bash 선택 시기

Zsh 선택 시기

Fish 선택 시기

Ksh 선택 시기

Sh 선택 시기