명령어를 입력하는 경로 기준이 아닌, 파일 기준으로 상대 경로 잡는 방법?

조회수 7998회

잘 모르는 부분이라 제목이 이상해지네요.

쉘스크립트로 작성한 명령어가 해당 스크립트를 어느 위치에서 실행하느냐에 따라 결과가 달라지던데요. 가령:

#!/bin/sh
pwd

이런 스크립트를

home
  ㄴ parent
      ㄴ child
          ㄴ test.sh

위와 같은 폴더 구조에서 실행할 때,

실제 실행 결과:

  • parent에서 실행: /home/parent
  • child에서 실행: /home/parent/child

이렇게 결과가 달라지는데요. 어느 위치에서 파일을 실행하던지 (환경변수 등으로 절대경로를 잡는 방법을 제외하고) 실제 파일이 위치한 경로를 기준으로 결과를 고정시킬 수는 없을까요?

원하는 실행 결과:

  • parent에서 실행: /home/parent/child
  • child에서 실행: /home/parent/child

이런 결과가 나오도록 말이죠.

좀 더 구체적인 예를 들자면,

home
  ㄴ parent
      ㄴ child
           ㄴ test.sh
      ㄴ script
           ㄴ execute-me.sh

test.sh

#!/bin/sh
../script/execute-me.sh

execute-me.sh

#!/bin/sh
echo hello world!

파일의 경로와 내용이 위와 같을 때, 어느 경로에서 test.sh를 실행해도 결과가 같도록 하고 싶습니다. 지금 이 상태로는 test.sh를 home/parent/child 에서 실행하지 않으면 execute-me.sh를 찾지 못하거든요.

물론, ../script/execute-me.sh 대신 /home/parent/script/execute-me.sh라고 절대경로로 작성하면 되겠지만 제가 원하는건 이게 아닌데요. 다른 방법이 있을까요?

2 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)