![sh 파일 실행은 스크립트 디렉토리로 CD를 이동할 때만 작동합니다.](https://linux55.com/image/47911/sh%20%ED%8C%8C%EC%9D%BC%20%EC%8B%A4%ED%96%89%EC%9D%80%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EB%A1%9C%20CD%EB%A5%BC%20%EC%9D%B4%EB%8F%99%ED%95%A0%20%EB%95%8C%EB%A7%8C%20%EC%9E%91%EB%8F%99%ED%95%A9%EB%8B%88%EB%8B%A4..png)
.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