2009-04-15 4 views
2

링크는 현재 디렉토리를 가리키는 것이 아니라 절대 경로를 가리켜 야합니다.절대 경로를 가리키는 링크

저는 이것을 참고로 말하고 있습니다. 소프트웨어를 유지 관리해야하며 이전 버전은 항상 최신 버전을 가리켜 야합니다.

답변

2

"우수 사례"를 정의하십시오. 링크가 절대 경로를 가리키는 지 여부는 파일 간의 관계에 따라 다릅니다.

파일이 항상 같은 상대 위치에 있지만 이동할 수있는 경우 (예 : bin/의 별칭) 파일은 상대적이어야합니다. 실제 파일이 알려진 위치에 있으면 (예 : 기본 구성 파일을 ~/.config에 연결하려는 경우), 절대 경로를 사용하십시오.

0

원하는 작업에 따라 다릅니다. 필자의 리눅스 시스템에는 두 가지 종류의 심볼릭 링크가있다.

find /usr /bin /lib -type l -print0 | xargs -0 ls -ld | less 
0

나는 "좋은 습관"이 있다고 생각하지 않습니다. 사용 사례가 다양합니다.

예를 들어 /home/.../application에 로컬로 설치된 프로그램이있는 트리를 저장하면 "default config"를 절대 경로없이 특정 구성에 심볼릭 링크해야 할 수 있습니다. 그런 식으로 전체 트리를 /home/.../application-other-instance로 옮길 때 config 파일에 대한 링크가 올바로 유지됩니다.

반면에 로컬 디렉토리에서/etc/...의 일부 전역 파일을 참조하려면 절대 경로 symlink를 사용합니다. 그것은 내가 어디서나 같은 파일을 가리키고 있음을 보장합니다.

달성하고자하는 것이 무엇인지 생각해보십시오. 상대 경로/절대 경로 결정은 명백하거나 관련이 없습니다. "절대하지 마라."규칙은 아마도 : 루트 디렉토리/xxx의 어떤 것에도 절대로 연결해서는 안됩니다. ../../../../../../../xxx

0

나는 ' 나는 일반화로서 그것에 동의 할 수 있다고 생각하지 않는다.

확실히 상대 링크가 더 적합한 경우가 있습니다. 예를 들어, 프로젝트의 디렉토리 트리가있는 경우. 프로젝트가 백업되거나 다른 장소로 이동 (심지어 복제)되는 경우 절대 링크가 혼란 스럽거나 재앙이 될 수 있습니다.

시스템 전반의 도구에 대해 이야기하고있는 경우에도 상대 링크는 의미가 있고 다른 때는 그렇지 않을 수 있습니다. 동일한 호스트에있는 GNU 컴파일러 도구의 여러 버전과 대상과 같은 grep과 같은 매우 일반적인 도구에 대한 링크와 비교하십시오. 후자의 경우 특정 도구 버전에 대한 절대 링크가 필요합니다.

모든 경우에 실제로하고 싶은 일로 돌아갑니다. 일반적인 대답은 일반화 된 대답이 없다는 것입니다.

관련 문제