# Fish 4.0.0 릴리스

> Clean Markdown view of GeekNews topic #19483. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19483](https://news.hada.io/topic?id=19483)
- GeekNews Markdown: [https://news.hada.io/topic/19483.md](https://news.hada.io/topic/19483.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-02-28T10:11:54+09:00
- Updated: 2025-02-28T10:11:54+09:00
- Original source: [github.com/fish-shell](https://github.com/fish-shell/fish-shell/releases/tag/4.0.0)
- Points: 2
- Comments: 1

## Topic Body

- Fish는 macOS, Linux 및 기타 Unix 계열 운영체제를 위한 사용자 친화적인 커맨드라인 쉘  
- 4.0.0 부터 Fish의 핵심 코드가 C++에서 **Rust로 포팅**됨  
  - 이는 종속성과 빌드 방식에 큰 변화를 가져오지만 사용자에게 직접적인 영향은 없음  
- **비호환 변경 사항**:  
  - `bind` 명령어의 새로운 키 표기법 도입  
  - `ctrl-c`가 이제 `clear-commandline`을 호출하며, 이전 동작은 `cancel-commandline`으로 사용 가능  
  - `random` 함수의 시드 값에 따른 결과가 이전 버전과 다르게 나올 수 있음  
  - 명령어 위치에 있는 변수는 이제 서브커맨드 키워드로 확장될 수 없음  
  - `functions --handlers`가 이제 정의된 순서대로 핸들러를 나열함  
  - `qmark-noglob` 기능이 기본적으로 활성화됨  
  
### 개선 사항 및 수정  
- **키보드 프로토콜**: XTerm의 `modifyOtherKeys`와 kitty의 키보드 프로토콜 지원  
- **자체 설치 바이너리**: fish를 자체 설치 가능한 바이너리로 빌드 가능  
- **명령어 히스토리**: `fish_should_add_to_history` 함수로 히스토리에 추가할 명령어 결정 가능  
- **되돌리기 기능**: 명령어 실행 후에도 히스토리가 유지됨  
- **약어 제한**: 특정 명령어에만 약어 확장 가능  
  
### 비추천 및 제거된 기능  
- `commandline --tokenize`가 `commandline --tokens-expanded`로 대체됨  
- `bind -k` 구문을 통한 키 이름 지정이 비추천됨  
- 붙여넣기 모드가 제거됨  
  
### 스크립팅 개선  
- **새로운 히스토리 명령어**: `history append`로 명령어를 실행하지 않고 히스토리에 추가 가능  
- **새로운 리다이렉션**: `

## Comments



### Comment 35234

- Author: neo
- Created: 2025-02-28T10:11:54+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=43194024) 
- Fish 4.0의 가장 흥미로운 점은 이제 Rust로 작성되었다는 것임
  - 테스트를 통해 눈에 띄는 차이가 있는지 확인하고 싶음
- 사용자에게 직접적인 영향은 없을 것이라고 함
  - Fish의 핵심을 다시 작성했지만, 거의 모든 것이 동일하게 작동함
- Fish 셸로 전환한 사람들에게 가장 큰 단점이 무엇인지 궁금함
  - 시스템에서 익숙해진 후 회사 서버 시스템에서 Bash나 Zsh를 사용해야 하는 경우
  - Bash에서 Fish로 전환할 거라면 Nushell로 전환하는 것도 고려할 만함
- Zsh 사용자로서 Fish를 시도해보고 싶음
  - Zsh에 플러그인을 추가하여 Fish처럼 작동하게 만들고 있음
- Homebrew를 사용하는 경우 아직 Fish가 제공되지 않음
  - 추가될 예정임
- Fish를 여러 해 동안 사용했지만, 주로 뛰어난 자동 완성 기능 때문임
  - 간소화된 테마/프롬프트 시스템과 oh-my-fish 플러그인 관리도 좋지만 부차적임
- Bash와 호환되지 않는 Fish의 나머지 기능들은 불편함
  - 특히 환경 변수 관리가 문제임
  - 원칙적으로는 Bash보다 더 나은 설계지만, 그리 큰 차이는 없고 사용 빈도가 낮아 매번 다시 배워야 함
  - 문서에서 설정 지침을 복사-붙여넣기할 때 불편함
- Rust로의 마이그레이션을 위한 개발 조정이 어떻게 이루어졌는지 궁금함
  - 단일 PR(#9512)만 보임
- Rust로 다시 작성한 후 바이너리가 얼마나 커졌는지 궁금함
- `clear-commandline`는 흥미로운 기능임
  - Windows와 macOS 간의 일관성을 유지하는 데 어려움이 있음
  - Karabiner를 제대로 사용하지 못함
  - 기본 `cancel-commandline` 설정을 확인할 예정임
