저는 Debian 8.2 가상 머신을 실행 중이고 install.sh라는 파일을 실행하려고 합니다.
다음 명령을 실행했습니다.
- sh./install.sh
- sh 설치.sh
- apt-get 설치 install.sh
위의 처음 두 명령을 실행하면 "구성이 존재하지 않습니다. 설치에 실패했습니다"라는 오류가 발생했습니다. 세 번째 명령은 다음과 같은 출력을 제공했습니다.
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package install.sh
E: Couldn't find any package by regex 'install.sh'
파일이 실행 가능한지 확인하기 위해 chmod 700 install.sh를 실행했습니다.
이런 종류의 오류에 대한 정보를 전혀 찾을 수 없습니다.
답변1
스크립트가 쉘 스크립트인 경우 처음 두 명령이 스크립트를 실행합니다. 하지만 파이썬일 수도 있습니다. 아니면 어이. 아니면 완전히 다른 껍질입니다. 따라서 안전을 유지하려면 언급할 필요가 없습니다. sh
특히 잘 작성된 대부분의 스크립트는 첫 번째 줄에 올바른 해석기를 지정하기 때문입니다.
- 스크립트를 실행 가능하게 만듭니다.
chmod a+rx install.sh
- 이제 실행해 보세요:
./install.sh
답변2
첫 번째 명령은 정확합니다(스크립트가 현재 디렉터리에 있는 한). 세 번째 순서는 아직 멀었습니다. 두 번째는 첫 번째와 동일한 작업을 수행합니다.
스크립트 실행 중: 스크립트를 실행할 수 없는 오류가 아닙니다. 스크립트의 일부 명령이 실패했습니다. 하지만 대본에 내용이 무엇인지 모르기 때문에 그렇게 말씀드릴 수 있습니다.
로 사용하기 위해 실행 가능하게 만들 필요는 없습니다 sh script_name
. 첫 번째 줄로 시작하면 #!…
실행 가능하도록 설계되어 ./script_name
.
스크립트가 bash
(또는 다른 고급 쉘) 확장에 의존하는 경우. 그럼 못 들어갈 수도 있겠네요.sh
스크립트를 디버깅하려면(bash 스크립트인 경우) 다음과 같이 실행할 수 있습니다.bash -x script_name
실행 파일을 확장하지 않는 것이 좋습니다. Python이나 C로 다시 작성하려면 이름을 바꿔야 합니다. 이는 좋은 생각이 아닙니다. (파일이 실행 가능하면 실행 가능합니다. 자체 인터프리터 선택을 담당합니다(참고자료 참조 #!
).