쉘이 런타임에 검색할 수 있도록 $HOME에 설치된 프로그램을 어떻게 구성할 수 있습니까? [폐쇄]

쉘이 런타임에 검색할 수 있도록 $HOME에 설치된 프로그램을 어떻게 구성할 수 있습니까? [폐쇄]

나는 일부 프로그램(bash 스크립트, Python 스크립트, Java 프로그램, C 프로그램)을 작성하거나 다운로드하여 /home/t/program_files/.각 프로그램에 대해 경로 아래에 디렉토리를 만들고 해당 프로그램의 모든 파일을 해당 디렉토리에 배치했습니다. 주제별 유사성을 기준으로 프로그램을 그룹화하고 , , 및 과 같은 디렉토리를 추가로 만들고 OSnetwork프로그램 document의 디렉토리를 해당 디렉토리 중 하나로 이동했습니다.이런 방식은 프로그램을 논리적인 방식으로 구성하는 데 도움이 되고, 프로그램 파일을 더 빨리 찾을 수 있다고 생각합니다.

프로그램을 실행하려면 모든 프로그램에 대한 검색 경로를 지정해야 합니다 PATH. 각 스크립트 또는 실행 파일의 경로를 수동으로 찾아 $PATH이를 수행하는 빠른 방법은 다음과 같습니다.PATH모든 하위 디렉토리 에 재귀적으로 추가/home/t/program_files/, 그러나 이 방법의 문제점은 실행 파일이나 스크립트 파일을 직접 포함하지 않고 다른 파일(예: Java 및 C 소스 파일)을 포함하는 디렉터리를 추가하고 PATH검색할 경로가 셸에 너무 많다는 것입니다. 꽤 오랜 시간 동안 명령을 실행했습니다.

위의 문제를 해결하는 좋은 방법은 무엇입니까?

  • 자일스의 대답추천집어 챙겨 넣다. Stow에 대해 조금 읽은 후 나는 그것이 심볼릭 링크를 생성하고 심볼릭 링크가 여전히 대상 파일과 동일한 방식으로 구성된다는 것을 알게 되었습니다. 제가 맞다면 프로그램의 검색 경로를 지정하는 문제에는 도움이 되지 않습니다. . 내 문제를 해결하는 데 도움이 될 수 있는 Stow에 대한 일부 정보를 놓쳤습니까?

  • 다른 방법내가 알고 싶은 것은 /home/t/program_files/각 파일이 아래에서 실행 가능한지 재귀적으로 확인하고, 그렇다면 아래에 심볼릭 링크를 만들고 /home/t/bin/상위 디렉터리의 경로 이름을 PATH.

  • 또한 사람들이 타사 프로그램을 만들고 다운로드하여 자신의 홈 디렉터리에 설치하려는 경우가 매우 일반적이라고 생각합니다. 그러한 프로그램을 구성하는 데 권장되는 방법은 무엇입니까? 프로그램을 정리할 때 각 프로그램의 모든 파일을 자신의 디렉토리에 넣지 않습니까?

감사해요.

답변1

저는 경험이 없고 stow잘 모르지만 귀하의 질문에 대한 답변으로 몇 가지 논리를 제안하거나 링크를 사용할 수 있습니다.

작성한 대로 프로그램 을 /home/t/program_files/.GHR_Communicatorcommunicatorsghrc

/home/t/program_files/communicators/GHR_Communicator/ghrc

이제 개인 실행 파일에 대해 공용 폴더를 지정한다고 가정합니다 . 이 폴더가 변수에 포함해야 하는 유일한 폴더 /home/t/bin입니다 . PATH일부 배포판에는 기본적으로 포함되어 있으므로 버전을 PATH확인 PATH하고 필요한 경우 추가하세요.

이 간단한 이름으로 호출 하려면 실행 파일에 대한 링크를 ghrc만들기만 하면 됩니다 .~/bin

$ ln -sr ~/program_files/communicators/GHR_Communicator/ghrc ~/bin

이제 다음과 같이 전화하세요 ghrc.

$ ghrc

당신은 그것을 실행했습니다.

답변2

저는 Stowe가 아마도 해당 작업에 적합한 도구라는 Giles의 의견에 동의합니다. Stow의 기본 모델은 각 소프트웨어마다 하나씩 특정 디렉터리에 소프트웨어를 설치하는 것입니다.매뉴얼 로딩/usr/local/stow/perl예제로 사용된 Perl과 Emacs는 각각 및 에 설치되어 있습니다 /usr/local/stow/emacs. 이 디렉토리 내에는 일반적인 구조 bin등이 있습니다 share. Stow는 디렉터리 및/또는 파일을 대상(일반적으로)에 심볼릭 링크하여 소프트웨어를 "설치"합니다 /usr/local. 설치하면 다음과 같이 사용할 수 perl있습니다 . 따라서 PATH 만 추가하면 됩니다 ./usr/local/stow/perl/bin/perl/usr/local/bin/perl/usr/local/bin

Stow에게 다음을 사용하라고 지시할 수 있습니다.여러 저장소 디렉터리, 그러면 문제가 해결될 것입니다. 아래의 일반적인 디렉토리 구조와 일치하는 디렉토리 구조를 갖고 있는 한 각각의 개별 소프트웨어 부분은 /usr/localStow를 통해 관리될 수 있습니다 .

Stow는 또한 홈 디렉토리에 저장된 프로그램 및 다양한 구조와 함께 작동합니다. 이를 통해 프로그램을 별도의 디렉토리에 설치하면서도 단일 공유 디렉토리(예를 들어 ~/.local/bin).

소스에서 프로그램을 빌드할 때 Stow에 대한 일반적인 접근 방식은 ./configure최종 대상 접두사( /usr/local)(또는 이에 상응하는 항목)를 사용하여 실행하고 Stow 디렉터리 내의 대상 디렉터리를 사용하여 소프트웨어를 설치하는 것입니다(예: /usr/local/stow/perl매뉴얼에 /usr/local/Programming/perl있음 ). /usr/local/ProgrammingStow 디렉터리 로 사용됨 ) . 그런 다음 Stow를 사용하여 적절한 기호 링크를 추가하여 소프트웨어를 사용할 수 있게 만들 수 있습니다.

관련 정보