Ubuntu에서 쉘 스크립트를 사용하는 데 문제가 있습니다.
내 스크립트:
#!/bin/bash
/usr/local/bin/node ./index.js
exec bash
실행 파일로 설정했습니다.
sudo chmod +x ./index.sh
그런 다음 실행하십시오.
sudo ./index.sh
하지만 다음을 얻으세요:
sudo: unable to execute ./index.sh: No such file or directory
그러나 파일은 다음과 같습니다.
$ ls -la
-rwxr-xr-x 1 root root 54 oct. 4 10:05 index.sh
답변1
이 스크립트는 Windows 컴퓨터에서 편집되었습니다. Windows의 편집자는 일반적으로 DOS 줄 끝을 사용합니다. \r
Unix 라인 종결자와 비교하여 추가 캐리지 리턴( )이 있습니다. 이는 스크립트를 실행하라는 요청을 받을 때 sudo
커널을 혼란스럽게 합니다 .
스크립트를 수정하려면 dos2unix
스크립트를 실행하세요.
또는 \r
스크립트의 모든 내용을 제거하십시오.
$ tr -d '\r' <index.sh >index.sh-new
$ # test index.sh-new to make sure it works
$ mv index.sh-new index.sh
어떤 방식으로든 리터럴 캐리지 리턴 처리에 의존한다면 스크립트가 분명히 중단될 것입니다.