A 위치에 있는 실행 파일이 B 위치에서 어떻게 실행됩니까?

A 위치에 있는 실행 파일이 B 위치에서 어떻게 실행됩니까?

따라서 데비안 서버에 실행 파일이 있고 실행 파일이 에 있지만 /home/human/ExecuteIt여전히 다른 위치에서 실행 파일을 실행하는 방법을 알 수 없습니다. 내가 아는 한 그렇습니다 /home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/.

일반적으로 구성 폴더가 1개 있으면 실행 파일을 복사/붙여넣고 을 사용하여 성공적으로 실행할 수 있지만 /home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/실행 sudo chmod +x ./executable파일에는 구성이 다른 여러 구성 폴더가 있습니다.

복사/붙여넣기 없이 실행 파일을 분리하고 다른 구성으로 실행할 수 있다면 좋을 것 같습니다. 내 실행 파일을 다른 위치에서 실행할 수 있는 방법이 있습니까?

답변1

실행 파일이 상대 경로에서 구성을 가져오는 경우 해당 경로는 pwd(현재 작업 디렉터리)에 상대적입니다. 그래서:

> cd /there/locA
> pwd
/there/locA
> /there/stuff/executable

실행 파일은 locB를 기준으로 검색됩니다. 지금:

> cd /there/locB
> pwd
/there/locB
> /there/stuff/executable

실행 파일은 locB를 기준으로 검색됩니다.

비밀번호가 locB 일 때 실행 파일을 실행하고 싶지만 마법처럼 locB 에서 구성을 가져오려는 경우, 유일한 방법은 실행 파일에 명령을 추가하여 라인 매개변수를 호출하는 것입니다. 또는 사용자 정의 환경 변수를 사용하십시오. 간단히 실행 파일을 locA에 복사한 다음 암호가 작동하지 않으므로 locA를 사용하기를 바라면서 locB에서 구체적으로 실행 파일을 호출하려고 합니다. 암호는 여전히 locB입니다.

개별 명령에 대해 $PWD를 설정하는 것을 확인했습니다.

> PWD=/there/locA bash -c 'echo $PWD'
/there/locB

작동하지 않습니다. 따라서 비밀번호를 스푸핑할 수 없을 수도 있습니다.

답변2

귀하의 질문을 제가 잘 이해하지 못했기 때문에 제가 이해한 내용을 제 말로 다시 설명하겠습니다. 프로그램과 동일한 디렉터리에서 구성 파일을 찾는 프로그램이 있습니다. 예를 들어 를 실행하면 /home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/executable에서 구성 파일을 찾습니다 /home/human/ExecuteIt/FolderWithConfiaguration/Configuration1. 예를 들어, 다양한 구성으로 프로그램을 실행할 수 있기를 원합니다 /home/human/ExecuteIt/FolderWithConfiaguration/Configuration2. 그리고 프로그램의 복사본을 여러 개 만들고 싶지도 않습니다.

당신(당신)은 할 수 있어요심볼릭 링크여러 디렉터리의 실행 파일에 액세스하고 모든 공용 파일에 대한 심볼릭 링크를 만듭니다. 예를 들어, 프로그램에 실행 파일 executable, 데이터 파일 data, 구성 파일이라는 세 개의 파일이 필요하다고 가정합니다 config. /home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/config및 에 두 가지 다른 구성이 있습니다 /home/human/ExecuteIt/FolderWithConfiaguration/Configuration2/config. 실행 파일과 데이터 파일의 복사본이 모두 있습니다 /home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/. 그리고 /home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/executable디렉토리에 심볼릭 링크를 만들고 /home/human/ExecuteIt/FolderWithConfiaguration/Configuration2/에 대한 심볼릭 링크도 만듭니다 /home/human/ExecuteIt/FolderWithConfiaguration/Configuration1/data.

cd /home/human/ExecuteIt/FolderWithConfiaguration/Configuration2
ln -s ../Configuration1/executable ../Configuration1/data

기호 링크는 시스템에 실제 파일을 다른 위치에서 찾도록 지시합니다. 자체에는 데이터가 포함되어 있지 않으므로 실행 파일 또는 실행 파일에서 데이터를 업데이트하면 Configuration1이는 모든 구성에 적용되며 파일 복사본은 하나만 있으므로 추가 구성에는 구성 파일의 디스크 공간만 필요합니다.

이런 방식으로 실행되는 대부분의 프로그램은 데이터 및 구성 파일을 찾을 때 실행 파일의 위치를 ​​고려합니다. 심볼릭 링크를 사용하는 경우에는 이 방법이 작동하지 않습니다. 대신에 다음을 만들 수 있습니다.하드 링크. 하드 링크는 동일한 파일에 대한 여러 경로입니다. 파일에 대한 모든 하드 링크는 동일합니다.

cd /home/human/ExecuteIt/FolderWithConfiaguration/Configuration2
ln ../Configuration1/executable ../Configuration1/data

이렇게 하면 경로에 지정된 모든 파일을 업데이트해야 하므로 파일 업데이트가 더 어려워집니다. 또한 동일한 파일에 대한 모든 하드 링크는 동일한 파일 시스템에 있어야 합니다.

관련 정보