2016-08-27 5 views
2

특정 기능을 실행하는 스크립트를 만들었습니다. 특정 기능을 실행 한 후에 다른 기능을 실행하는 다른 스크립트를 호출합니다. 완벽하게 작동합니다. 그러나, 나는이 코드 줄과 두 번째 스크립트 불렀다 :Bash 스크립트에서 경로 변수 지정

(exec "/home/sh0/folder/folder2/folder3/secondScript") 

내가 완전히 다른 파일 경로와 다른 시스템에 내 스크립트를 실행한다면? 파일 경로에 대한 걱정없이 모든 컴퓨터에서 스크립트를 호출 할 수있는 방법이 있습니까?

또한, 내 모든 스크립트는 'FOLDER3'미리

감사 할 것이다 같은 디렉토리에 있습니다!

+0

정말로 다른 의미입니까, 예를 들어 _everything_하지만 다른 컴퓨터에서'folder3/secondScript'가 다를 수 있습니까? 아니면 사용자의 집 (아마도'/ home/sh0/folder') 디렉토리가 모든 머신에서 다르지만 상대 경로가 동일하게 유지된다는 것을 의미합니까? –

답변

3

궁극적으로 스크립트가 설치된 위치를 알고 디렉토리가 $PATH인지 확인해야합니다. 그런 다음 스크립트의 경로를 지정하지 않고 secondScript을 사용할 수 있습니다.

그러나 기계마다 위치가 다를 수있는 경우 분산을 어떻게 줄일 것인지 결정해야합니다. 일반적인 옵션 중 하나는 $HOME/bin 또는 /usr/local/bin과 같은 알려진 위치에 스크립트를 보관하는 것입니다. 경로에서 알려진 위치를 유지하거나 /opt/program/bin (적절한 시스템 이름을 program으로 사용합니다. 당신이 사용하고 있습니다).

다른 옵션은 스크립트가있는 곳 (PROGRAMLOCATION=/home/sh0/folder/folder2/folder3export PATH=$PATH:$PROGRAMLOCATION)을 지정하는 환경 변수를 갖는 것입니다. 그런 다음 환경 변수 (PROGRAMLOCATIONPATH)가 적절하게 설정되었는지 확인해야합니다. 까다로울 수 있습니다.

폴더 이름이 고유하다고 생각하면 find을 사용하여 디렉터리를 찾을 수는 있습니다. 같은 이름의 6 개의 다른 디렉토리를 찾으면 무엇을합니까? 특별히 제한되지 않은 find은 느립니다. 특히 NFS 마운트 파일 시스템이있는 경우.

#!/bin/bash 

MY_PATH="$PWD" 
FOLDER3="folder3" 

echo "$MY_PATH/$FOLDER3" 

아래 그림처럼

1

당신은 간단하게 알려 주시기 바랍니다 경로를 저장할 수있는 경우에 당신이 여부를 찾고있는이.

관련 문제