Fish 셸에서 사용자 구성을 위한 여러 위치의 목적(및 가능한 사용 규칙)은 무엇입니까?

Fish 셸에서 사용자 구성을 위한 여러 위치의 목적(및 가능한 사용 규칙)은 무엇입니까?

최근에 이사했어요물고기~에서세게 때리다. 저는 즉시 그 기능에 반했습니다. 하지만 쉘 구성에 관해서는 약간 압도당했습니다.

내가 읽고문서,특히초기화 부분에 대하여, 이는 다음과 같습니다.

시작 시 Fish는 여러 구성 파일을 평가합니다.

  • .fish로 끝나는 파일의 구성 조각은 다음 디렉터리에 있습니다.
    • $__fish_config_dir/conf.d(기본적으로, ~/.config/fish/conf.d/)
    • ...
  • 사용자 초기화는 일반적으로 ~/.config/fish/config.fish...

이제 이 점은 명확하게 이해되었습니다. Bash에서 .bash_globals나와 파일을 꺼내서 .bash_aliasesFish의 구문을 기반으로 약간 다시 작성한 다음 넣고 ~/.config/fish/conf.d/예상한 대로 로드했습니다.

그런데 파일 내용을 보니까 config.fish거기에 넣어야 할 내용이 하나도 떠오르지 않네요. 내가 이해한 바에 따르면 fish는 기본적으로 사용되도록 설계되었으므로 HISTCONTROL일반적인 bash 구성(설정 등)이 필요하지 않습니다. 이러한 파일은 conf.d/일부 기본 스크립트(예: .bash_aliasesetc .bashrc)에서도 호출되지 않으며 자동으로 로드됩니다.

config.fish파일이 선호되거나 필요한 특정 사용 사례가 있습니까 ? conf.d/지금까지는 단일 파일이 읽기, 유지 관리 및 호스트 간 이동이 더 쉽다고 말하고 싶습니다. 따라야 할 권장 규칙이 있습니까? 사용자에게 더 많은 자유를 제공하는 것 외에도 그렇게 많은 수준의 구성을 허용하는 특별한 동기가 있습니까?

답변1

이를 위해서는 두 가지 모두에 대한 몇 가지 타당한 이유가 있다고 말하고 싶습니다.

첫째, 아마도 가장 중요한 것은 @Zanchey가 의견에서 지적했듯이 conf.d버전 2.3.0에서 지원이 제공되었으므로 config.fish그 당시 제거는 획기적인 변화가 될 것입니다.

둘째, 말씀하신 것처럼 사용자는 시작 동작을 처리하는 방법을 자유롭게 선택할 수 있습니다.

둘째, 어떤 면에서는 “저항이 가장 적은 길”이기도 합니다. 나는 파일 모듈화에 대한 귀하의 선호에 확실히 동의하며 conf.d/, 나 config.fish자신이 그것을 갖고 있지 않은 것을 좋아합니다. 그러나 일부(아마 대부분의) 최초 사용자는 기본적으로 구성을 저장하는 유사한 위치 fish에 익숙합니다 . .bash_profile패러다임의 변화를 상상할 수 있다아니요단일 파일 구성은 일부 사람들에게 불쾌감을 줄 수 있습니다. 즉, config.fish신규 사용자에게 원활한 마이그레이션을 제공하는 데 도움이 됩니다.

또한 config.fish이전 셸에서 이미 알고 있는 내용과 매핑되므로 새로운 사용자에게 설명하기가 더 쉽습니다. ~ 일지라도fish 자주하는 질문기본값은 이것이 config.fish이전 시작 스크립트와 동일하다는 것을 사용자에게 알려줍니다. 나는 그들이 conf.d/대안에 대해서도 계속 설명하기를 바랍니다 .

그리고 config.fish또 다른 작은 장점이 있는데, 실행 순서가 더 명확하다는 것입니다(즉, 처음부터 끝까지 실행됨). 파일은 다른 파일과 마찬가지로 알파벳 순서(또는 대부분의 경우 전체 결과 순서)로 conf.d/읽혀집니다 . 내 경험상 이는 한 파일이 다른 파일보다 먼저 실행되도록 하려면 명명된 유형 conf.d/에 의존해야 함을 의미합니다 . 00_dependency.fish즉, 이에 의지해야 하는 사람은 거의 없을 것입니다.

httpd.conf"규칙"에 관해서는 많은 배포판이 기본 "단일 파일"을 사용하여 구성 파일(예: Apache2)을 설정하고 구조를 계속 처리한다는 것을 알고 있습니다 conf.d/. 이 예에서는 fish방금 취소했습니다.for conffile in ~/.config/fish/conf.d/*.fish; source $conffile; endconfig.fish

관련 정보