![상위 디렉터리에서만 .sh 파일을 실행할 수 있고 하위 디렉터리에서는 실행할 수 없는 이유는 무엇입니까?](https://linux55.com/image/48771/%EC%83%81%EC%9C%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%97%90%EC%84%9C%EB%A7%8C%20.sh%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%9E%88%EA%B3%A0%20%ED%95%98%EC%9C%84%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%97%90%EC%84%9C%EB%8A%94%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%97%86%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
나는 이것이 작동하지 않는다는 것을 알았습니다.
/tomcatDirectory/bin $ startup.sh //command not found
하지만 효과가 있어요
/tomcatDirectory $ bin/startup.sh
나는 Windows에 익숙합니다. 작업 디렉터리에서는 프로그램을 실행할 수 없고 상위 폴더에서만 프로그램을 실행할 수 있다는 것이 나에게는 직관에 어긋나는 것 같습니다.
여기서 무슨 일이 일어나고 있는지에 대한 큰 그림은 무엇입니까?
답변1
현재 디렉토리(즉 .
)가 경로에 없습니다. 사용해 보세요
./startup.sh
다음 명령을 사용하여 경로를 확인할 수 있습니다.
echo ${PATH}
너할 수 있다.
경로에 현재 디렉터리( )를 추가합니다. 하지만 이는 위험하다고 간주됩니다(특히 .
다른 디렉터리보다 먼저). 명령이 입력되면 쉘은 먼저 현재 디렉터리에서 해당 명령을 실행하려고 시도합니다. 그러면 대신 기존 콘텐츠가 실행됩니다.기본하나.
요약: 현재 디렉터리에서 실행 파일을 실행하면 됩니다 ./
.
답변2
.
"startup.sh"는 파일 경로처럼 보이지 않고 PATH 환경 변수에도 없기 때문입니다. 하지만 아직 시작할 수는 있어요./startup.sh