1P by neo 14시간전 | ★ favorite | 댓글 1개
  • Rust로의 포팅: 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 --tokenizecommandline --tokens-expanded로 대체됨.
  • bind -k 구문을 통한 키 이름 지정이 비추천됨.
  • 붙여넣기 모드가 제거됨.

스크립팅 개선

  • 새로운 히스토리 명령어: history append로 명령어를 실행하지 않고 히스토리에 추가 가능.
  • 새로운 리다이렉션: `
Hacker News 의견
  • 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 설정을 확인할 예정임