.sh 파일에는 `#!/bin/bash` 줄이 있어도 `sh app.sh`가 필요합니다.

.sh 파일에는 `#!/bin/bash` 줄이 있어도 `sh app.sh`가 필요합니다.

나는 그 줄을 포함하면

#!/bin/bash

내 파일 시작 부분에서 바로 실행할 수 있는 bash 스크립트로 인식됩니다.

file.sh

대신에

sh file.sh

하지만 내 경우에는 give file.sh와 같은 것을 제공합니다 . 왜 그런 겁니까?test.shtest.sh: command not found

업데이트

을 사용해야 한다는 것을 알았습니다 ./. 하지만 어쨌든 현재 디렉토리에서 볼 것이라고 생각 했습니까?

./test.sh

답변1

먼저 파일이 실행 가능한지 확인해야 합니다.

chmod +x file.sh

그런 다음 실행하려면 PATH(예: 실행할 파일을 찾을 때 OS가 검색하는 파일 디렉터리 중 하나)에 넣거나 로 찾을 수 있거나 echo $PATH다음을 입력해야 합니다.

./file.sh

그냥 입력하는 것보다 file.sh.

file.shPATH에 있으면 간단히 입력할 수 있습니다 . 권장합니다. 좋은 곳은 에 있습니다 ~/bin. 해당 폴더가 없으면 생성하고 Ubuntu에서 로그인할 때 해당 폴더가 경로에 추가됩니다.

답변2

현재 디렉토리가 PATH에 없기 때문에 ./file.sh로 시작해야 합니다.

이것이 충분하지 않다면, frabjous가 제안하는 것을 놓쳤기 때문에, 다음 과 같이 chmod a+xshebang으로 시작하는 프로그램을 시작해야 합니다.#!/bin/bash

bash file.sh

~ 아니다

sh file.sh

sh가 /bin/bash에 대한 심볼릭 링크인 경우에도 마찬가지입니다.

쉘은 호출된 방법을 확인하고 sh호환 모드에서 작동하도록 호출될 수 있으므로 bash file.sh.

그것은 당신의 문제가 아니었지만 이러한 미묘한 차이를 모른다면 문제가 될 수도 있습니다.

관련 정보