PATH는 상대 디렉터리를 사용합니다.

PATH는 상대 디렉터리를 사용합니다.

내 배포판의 패키지 관리자에 없는 프로그램을 실행하려고 합니다. Makefile이나 소스 코드는 제공하지 않으며 바이너리만 제공합니다. 전체 폴더를 /usr/local에 복사한 다음 .bashrc의 PATH에 추가하면 프로그램을 실행할 수 있지만 문제가 발생합니다. 프로그램에는 해당 디렉터리에 일부 로컬 파일이 필요하며 이를 상대 경로로 저장합니다. 프로그램은 프로그램 자체가 있는 디렉터리가 아닌 현재 내가 있는 디렉터리에서 파일을 찾습니다. 이 문제를 해결할 방법이 있나요? 감사해요.

답변1

프로그램이 실제로 너무 비우호적이어서 사용자가 실행하기를 기대하는 경우오직자체 디렉터리에서 가져온 경우 자체 디렉터리(하위 폴더 포함)에 보관하고 PATH에 있는 스크립트를 만들어야 할 수도 있습니다. 스크립트는 프로그램이 있는 곳으로 디렉토리를 변경하고 실행합니다. 모든 것이 더 좋아질 것입니다. 알았어 알았어. 그것은 다음과 같습니다:

#! /bin/sh -
cd /usr/local/crudesoftware &&
./theprogram  

답변2

많은 프로그램은 고유한 환경 변수를 사용합니다. 예를 들어, 이름이 지정된 프로그램은 또는 이름이 지정된 환경 변수를 foo찾을 수 있습니다 (해당 변수가 설정되지 않은 경우 현재 디렉터리를 기본 디렉터리로 사용할 수 있음). 출처가 없다고 말씀하신 건 알지만, 문서가 있나요? 어쩌면 프로그램 사용의 예일까요?FOO_DIRFOO_DATA_PATH.bashrc

최후의 수단으로 시도해 보세요.

strings foo

(이것이 foo프로그램 이름이라고 가정합니다). 이는 바이너리의 모든 "문자열"을 나열합니다( strings(1)자세한 내용 참조). 이로 인해 많은 출력이 생성됩니다. 그 중 대부분은 횡설수설입니다. 예 more를 들어 호출기로 파이프해야 합니다 less. 환경 변수 이름처럼 보이는 줄(예: 모두 대문자, 밑줄 포함)을 찾아 프로그램이 설치된 디렉터리로 설정해 보세요.

관련 정보