![Chrome OS에서 Bash는 내 스크립트를 실행하지 않습니다. Bash에서 스크립트를 실행하려면 어떻게 해야 하나요?](https://linux55.com/image/42711/Chrome%20OS%EC%97%90%EC%84%9C%20Bash%EB%8A%94%20%EB%82%B4%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4.%20Bash%EC%97%90%EC%84%9C%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%98%EB%82%98%EC%9A%94%3F.png)
foo.sh
현재 디렉토리에 파일이 있습니다. 실행하려고 하면 다음과 같은 결과 ./foo.sh
가 나타납니다.
-bash: ./foo.sh: /bin/sh: bad interpreter: Permission denied
하지만 실행해 보면 /bin/sh ./foo.sh
괜찮습니다.
./foo.sh
실행할 수 있고 자동으로 /bin/sh를 사용하여 실행할 수 있도록 이 문제를 어떻게 수정합니까 ?
편집: 좋습니다 . 이것은 Chrome OS이고 이 특정 폴더는 noexec
../foo.sh
왜?왜 sh foo.sh
달리기를 통해 여전히 같은 목표를 달성할 수 있나요? 그렇다면 noexec
어떤 안정감을 가져오나요?
답변1
이 noexec
플래그는 "예상된" 동작이므로 스크립트에 적절하게 적용됩니다.
그러나 이러한 설정은 noexec
자신이 하고 있는 일에 대해 충분히 알지 못하는 사람들을 방해할 뿐입니다. 실행하면 sh foo.sh
실제로는 더 이상 사용되지 않는 sh
기본 위치(아마도)에서 실행됩니다 ./bin
noexec
noexec
직접 전화하여 일반 바이너리를 얻을 수도 있습니다 ld
.
cp /bin/bash $HOME
/lib/ld-2.7.so $HOME/bash
을 사용하여 위치를 찾았는지 여부에 관계없이 bash를 실행합니다 noexec
.
답변2
MS-DOS 2바이트(캐리지 리턴 및 라인 피드) 줄 끝이 있는 파일을 실행하려고 하면 이 오류(또는 매우 유사한 메시지)가 나타날 수도 있습니다.
요즘 Vim은 캐리지 리턴을 반드시 "^M"으로 표시하지 않을 정도로 똑똑합니다. 따라서 Vim이 생각하는 "파일 형식"이 무엇인지 확인하지 않고 화면에 나타나는 방식에만 의존한다면 속을 수 있습니다.
이 경우 "#!/bin/sh^M"으로 인해 커널은 "/bin/sh^M"을 찾으려고 시도하지만 찾을 수 없습니다. 참으로 형편없는 번역이다.
답변3
USB 스틱(또는 기타 이동식 미디어)에서 스크립트나 프로그램을 실행할 수 있는 옵션이 있는 경우 수동으로 제거하고 다시 설치해 볼 수 있습니다.
USB 플래시 드라이브 삽입
USB 스틱 장치 찾기
$ mount
그것을 기록해 두십시오.
/dev/sdb1
USB 플래시 드라이브 제거:
$ cd /media/removable $ sudo umount mountpoint
마지막으로 USB 드라이브를 다시 설치합니다.
$ sudo mount /dev/sdb1 mountpoint
USB 스틱의 마운트 포인트 이름을 사용하십시오.
답변4
나는 같은 문제를 가지고있다. 내 문제는 SD 카드에 있습니다. 이것은 나에게 도움이되었으며 여기의 다른 답변보다 훨씬 간단합니다. 난 거기서 배웠어크루통 질문 #928.
$ sudo mount -o remount,exec /media/removable/SD\ Card
장치(/dev/mmcblk1p1)가 아닌 마운트 지점을 사용해야 합니다. 귀하의 경우에는 USB(/dev/sdb1)도 마찬가지입니다. 마운트 지점만 다릅니다.
$ sudo mount -o remount,exec /media/removable/USB\ Drive
쿼리할 때 마운트 옵션에서 "noexec"가 사라지므로 원하는 효과가 있다는 것을 알 수 있습니다.