나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2026-08-07 12:14:26

fish(쉘)

fish
<nopad> 파일:fish-logo.svg
원작자 Axel Liljencrantz
최초 출시 2005년 2월 13일
최신 버전 4.7.1
개발 언어 Rust[1]
라이선스 GPL 2.0
지원 플랫폼 유닉스 계열(macOS, Linux 등)
종류 유닉스
링크 공식 홈페이지 · GitHub

1. 개요2. 역사3. 특징
3.1. 다른 셸들과의 차이점
4. 평가


1. 개요

fish(friendly interactive shell)는 상호작용성과 사용성에 초점을 맞춘 유닉스 계열 셸이며, 고도의 설정 가능성보다 기본값 자체가 풍부한 기능을 갖추도록 설계되었다. POSIX 셸 표준을 의도적으로 따르지 않는 것이 가장 큰 특징이다.

2. 역사

3. 특징

사용자가 타이핑하는 즉시 명령 기록과 현재 디렉터리를 기반으로 실시간 제안(incremental suggestion)을 보여준다. Bash의 Ctrl+R과 비슷한 기능이지만 항상 기본으로 켜져 있다는 차이가 있다. 경로 확장(와일드카드, 중괄호 확장), 환경변수, 명령별 자동완성을 지원하는 풍부한 탭 완성 기능을 자랑한다. 문법 강조, 자동 제안, 세련된 탭 완성이 플러그인이나 설정 없이 기본으로 제공된다. 또한 서브셸을 언어 기능으로 전혀 만들지 않아, 서브셸에서의 변수 변경 등이 부모 셸에 반영되지 않는 문제 자체가 존재하지 않는다.

3.1. 다른 셸들과의 차이점

POSIX 비호환으로 인한 문법 차이가 두드러진다.[3] 인터랙티브 셸로는 강점이 뚜렷하지만, 기존 bash 스크립트는 수정 없이 fish에서 돌아가지 않는다. 그렇기에 스크립팅 용도로는 여전히 bash가 더 이식성이 높다는 평가가 지배적이다.#

4. 평가

"가장 정돈된 인터랙티브 셸"이라는 호평과 동시에, POSIX 미준수로 인해서 기본 셸로 사용하기에는 부적합하다는 반론도 존재한다. 따라서 fish를 프론트엔드로만 사용하고 스크립팅/CI용으로 bash·zsh를 병행하는 방식이 실무에서 흔히 권장되는 편이다.#


[1] v4.0부터 러스트로 개발한다. 이전은 C++(~v3.7.1), 최초에는 C 기반이었다.[2] C++에서 Rust로 포팅되었다.[3] 조건문, 변수 할당 등

분류