사용자의 홈 디렉토리와 관련된 ~/SomeDir에 대한 심볼릭 링크

사용자의 홈 디렉토리와 관련된 ~/SomeDir에 대한 심볼릭 링크

다른 사람들과 공유하는 프로젝트가 있습니다. git에 저장되고 배포됩니다.

여기에는 git 아카이브 외부의 디렉터리에 대한 링크가 포함되어야 하지만 다음과 같이 일부 공통 라이브러리가 있는 사용자의 홈 디렉터리 내부에 있어야 합니다.

Arduino -> /home/gilhad/GitHub/arduino-1.8.1
Arduino-Makefile -> /home/gilhad/GitHub/Arduino-Makefile
Bare-Arduino-Project -> /home/gilhad/GitHub/Bare-Arduino-Project

그것은 나(길하드)에게는 효과가 있지만 내 친구에게는 그렇지 않습니다. 다음과 같은 링크를 만들고 싶습니다.

Arduino -> ~/GitHub/arduino-1.8.1
Arduino-Makefile -> ~/GitHub/Arduino-Makefile
Bare-Arduino-Project -> ~/GitHub/Bare-Arduino-Project

이렇게 하면 내 계정의 이전 문제와 내 친구 계정의 후속 문제가 효과적으로 해결됩니다.

Arduino -> /home/friend/GitHub/arduino-1.8.1
Arduino-Makefile -> /home/friend/GitHub/Arduino-Makefile
Bare-Arduino-Project -> /home/friend/GitHub/Bare-Arduino-Project

(이 git/actual 디렉토리가 실제로 어디에 있는지에 관계없이 프로젝트 는 에도 배치될 수 있고 항상 사용자의 홈 디렉토리( 또는 또는 가리키는 모든 디렉토리) 에 배치되므로 ../../../GitHub/....대상이 작동하지 않습니다.~/tmp~/my/special/folder/for/projectsGitHub/home/gilhad/home/friend~

답변1

실제로 심볼릭 링크를 사용하여 이 작업을 수행할 수 없습니다. 물결표를 사용하여 홈 디렉토리를 참조하는 것이 쉘 기능이며 모든 프로그램에서 지원되지는 않는다는 사실 외에도(많은 프로그램에서 지원하지만) "홈 디렉토리"의 전체 개념은 사용자 공간 개념이며 모든 프로그램에서 지원되지 않습니다. 커널에는 존재하지 않습니다. 따라서 심볼릭 링크를 해결하는 커널 파일 시스템 계층에는 필요한 지식이 없습니다.

Linux에서는할 수 있다정말로 원한다면 마운트 네임스페이스와 바인드 마운트를 사용하여 무언가를 구성할 수 있습니다. (바라보다여기,여기그리고여기)


어쨌든, 저장소 자체 외부를 가리키는 링크를 git 저장소에 생성한다는 아이디어가 조금 이상하게 보입니다. 링크는 자신이 설정한 시스템을 준수하는 사용자만 사용할 수 있으며, 다른 레이아웃을 원하거나 필요한 개별 사용자는 약간 운이 좋지 않습니다. 사용자 파일의 위치를 ​​저장하기 위해 환경 변수를 사용하는 것을 고려할 수 있습니다. 사용자를 $ARDUINO가리키는 방식 으로 표현 /home/foo/GitHub/arduino-1.8.1하거나 /home/foo/GitHub/arduino-someotherversion사용자가 요청한 대로 표현합니다.

관련 정보