sh 파일 실행은 스크립트 디렉토리로 CD를 이동할 때만 작동합니다.

sh 파일 실행은 스크립트 디렉토리로 CD를 이동할 때만 작동합니다.

.sh구문을 통해 ./file.sh파일을 실행 하려고 합니다 . 나는 실수로 내가 달릴 수 있다고 생각했습니다.

./usr/bin/foo/bar.sh

그러나 다음을 "No such file or directory"실행하면 .

cd /usr/bin/foo && ./bar.sh

완벽하게 작동합니다. 첫 번째 방법이 작동하지 않는 이유는 무엇입니까?

(저는 루분투 14를 사용하고 있습니다)

답변1

이것. 디렉터리 경로의 시작 부분은 현재 작업 디렉터리에서 시작하는 상대 경로임을 나타냅니다. 그렇지 않은 경우 파일 시스템 루트에서 시작됩니다.

/usr/bin/foo/bar.sh따라서 이전 지점 없이 실행 해야 합니다 .
이 점은 파일과 동일한 디렉토리에 있는 경우에만 필요하며, 디렉토리를 추가하지 않고도 어디에서나 실행할 수 있는 동일한 이름을 가진 /bin에 있는 최종 기존 파일과 구별하기 위해 필요합니다.

답변2

포인트가 중요합니다.

바꾸다:

./usr/bin/foo/bar.sh

사용:

/usr/bin/foo/bar.sh

논의하다

고려하다:

./usr/bin/foo/bar.sh

이는 다음으로 시작됩니다.현재의디렉토리를 선택 ./하고 하위 디렉토리를 찾으세요 usr. 현재 디렉터리에 해당 하위 디렉터리가 없으면 다음 메시지가 표시됩니다.

bash: ./usr/bin/foo/bar.sh: No such file or directory

이와 대조적으로 다음을 고려하십시오.

cd /usr/bin/foo && ./bar.sh

이것은 현재 디렉토리를 완전히 무시하고 /usr/bin/foo.

답변3

.현재 디렉터리를 나타냅니다. 다음과 같이 실행해 보세요.

/usr/bin/foo/bar.sh

앞에 a를 넣으면 .다음을 찾습니다.

whateverdirectory/yourein/usr/bin/foo/bar.sh

관련 정보