Linux에서 "union" 심볼릭 링크를 사용할 수 있습니까? 이것이 실제 용어인지는 확실하지 않으므로 개념을 설명하겠습니다.
가 포함된 git 저장소가 있습니다 ~/dotfiles
. 디렉토리에 대한 심볼릭 링크를 사용하여 "활성화"합니다. 예를 들어 다음 ln -s ~/dotfiles/bash/bash_profile ~/.bash_profile
을 실행하여 링크를 생성합니다.
~/.bash_profile -> ~/dotfiles/bash/bash_profile
그런데 여러 파일의 내용을 병합하고 싶은 상황이 생겼습니다. 예를 들어, ~/.bash_profile
심볼릭 링크가 각 파일마다 하나씩 두 개의 별도 파일을 가리키도록 하고 싶습니다 . 예를 들어:
~/.bash_profile
(1) -> ~/dotfiles/bash/bash_profile
(2) -> ~/dotfiles/proj/bash_profile
두 파일(예: cat ~/dotfiles/{bash,proj}/bash_profile > ~/.bash_profile
)을 간단히 연결할 수 있다는 것을 알고 있지만 심볼릭 링크를 사용하여 동일한 작업을 수행할 수 있다면 그렇게 하는 것이 더 좋습니다.
그러한 기능이 존재한다면(Nix는 꽤 큼) 뒤에서 두 개의 서로 다른 파일을 함께 매핑해야 하고 뒤에서 다양한 복잡성을 숨겨야 한다고 상상합니다(첫 번째 "매핑"되지 않은 모든 파일 매핑) 파일 이동, 연결된 심볼릭 링크를 쓸 때 모든 파일 잠금 등).
만약 그런 기능이 없다면 구현할 계획이 있나요?
답변1
심볼릭 링크는 "이 파일을 다른 곳에서 찾아보세요"라고 말합니다. 심볼릭 링크의 내용은 대상의 내용과 동일합니다. 아니요, 심볼릭 링크는 그렇게 할 수 없습니다. 나는 심볼릭 링크와 관련된 기능을 찾으려고 하지 않는 것이 좋습니다. 왜냐하면 그것은 당신이 원하는 것이 아니기 때문입니다. "심볼릭 링크 연결"이라는 용어에서 원하는 것이 무엇인지 이해하지 못하고 원하는 것을 본 후에도 왜 그렇게 부르는지 모르겠습니다.
파일의 내용이 여러 파일의 내용을 결합한 결과가 되기를 원합니다. 이는 시스템의 일부가 조합을 수행할 수 있어야 하며 원하는 조합 유형을 설명해야 함을 의미합니다(제가 올바르게 이해한 경우 연결).
최신 UNIX 시스템에는 저장 방법에 관계없이 임의의 데이터를 파일로 표시하는 방법이 있습니다.퓨즈. FUSE를 사용하면 파일에 대한 모든 작업(생성, 열기, 읽기, 쓰기, 디렉터리 나열 등)이 프로그램의 일부 코드를 호출하고 해당 코드는 원하는 모든 작업을 수행할 수 있습니다. 보다실제로 명령인 더미 파일을 만듭니다.. 시도해 볼 수 있습니다스크립트 파일 시스템또는퓨즈, 또는 야심이 있다면 스스로 할 수 있습니다.
이 사용 사례에서는 동적 생성이 올바른 선택이라고 생각하지 않습니다. 약간 복잡하고 모든 곳에서 작동하지 않습니다(FUSE는 루트가 아닌 사용자가 항상 액세스할 수 있는 것은 아니며 Cygwin에서도 일부 시스템(예: Windows)에서는 전혀 사용할 수 없습니다). 내가 했던 것과 같은 접근 방식을 사용하는 것이 좋습니다. 일부 포함 기능( .bash_profile
, .gitconfig
, ...)이 있는 파일의 경우, 구성 파일 중 하나를 수정한 경우 다른 파일에 대해 이 방법을 사용하세요 make
. ) 애플리케이션에서 읽은 파일을 다시 생성합니다.
답변2
텍스트 처리 기능으로서의 모듈식 구성 파일
당신이 요구하는 것은 파일 처리보다 더 정확한 텍스트 처리입니다. 이는 어떤 프로그램이 텍스트 파일을 사용하는지에 따라 많이 달라집니다.
원하는 작업을 수행하는 기존의 간단한 방법은 다음과 같이 모듈식 방식으로 다른 파일을 포함하는 최상위 파일을 만드는 것입니다.
~/.bash_config 파일:
source ~/dotfiles/bash/bash_profile
source ~/dotfiles/proj/bash_profile
한 가지 이점은 임시 변경을 수행하고 의도를 명확하게 유지하기 위해 행을 주석 처리할 수 있다는 것입니다.
source ~/dotfiles/bash/bash_profile
# source ~/dotfiles/proj/bash_profile
source ~/dotfiles/proj2/bash_profile
심볼릭 링크 디렉토리를 사용하여 스크립트 관리
그러나 심볼릭 링크를 사용하여 프로필 모음을 관리하려는 경우 bash
기존 심볼릭 링크 위에 "접착제"를 거의 사용하지 않고 이를 수행할 수 있는 입증된 방법이 있습니다.
(를 가리키는) 및 (를 가리키는)이라는 이름의 링크를 사용하여 (예를 들어)라는 디렉터리를 만들고 ~/.bash_profiles
~/.bash_profile에 넣으세요.00base
~/dotfiles/bash/bash_profile
10proj
~/dotfiles/proj/bash_profile
for file in ~/.bash_profiles/* ; do source $file ; done
그런 다음 파일을 편집하지 않고도 기호 링크를 조작하여 프로필을 활성화, 비활성화 및 재정렬할 수 있습니다. Bash의 확장은 어휘순으로 정렬되기 때문에 작동합니다 ~/.bash_profiles/*
.
이는 본질적으로 init
클래식 Unix/Linux가 시스템 시작 스크립트를 관리하는 방식입니다. bash
작업 중인 프로젝트에 따라 선택적으로 로드할 수 있는 매우 복잡한 사용자 정의 세트가 없다면 이는 과잉일 수 있습니다.