bash dos-eol을 허용하도록 만들기

bash dos-eol을 허용하도록 만들기

일부 Linux 커널을 컴파일하려고 할 때 이런 일이 발생하며 어떻게 든 다음 메시지가 표시됩니다.

.../kernel-source/scripts/mkmakefile: line 5: $'\r': command not found

이는 파일에 일반 파일이 아닌 DOS-EOL이 포함되어 있기 때문입니다. 일반적으로 이러한 문제가 있는 파일을 패치할 수 있지만 dos2unix이 경우 mkmakefile파일은 다른 스크립트(Yocto Linux 프레임워크를 사용하지만 Android 빌드 프로세스에서 동일한 문제가 있음)에 의해 생성되었습니다.

igncrCygWin에는 bash 옵션이 있지만 Linux bash에는 없다는 것을 알고 있습니다 .

\rbash에 문자(예: \r\n동등한 문자 )를 무시하도록 지시하는 방법/옵션이 있습니까 \n?

편집: shebang과 첫 번째 실행 가능한 줄 사이의 첫 번째 빈 줄(주석 사이의 빈 줄)에서 오류가 발생합니다.

Yocto 로그(실제로는 Xilinx의 Yocto 기반 프레임워크인 Petalinux)는 다음을 보여줍니다.

DEBUG: Executing python function sysroot_cleansstate
DEBUG: Python function sysroot_cleansstate finished
DEBUG: Executing python function check_oldest_kernel
DEBUG: Python function check_oldest_kernel finished
DEBUG: Executing shell function do_configure
NOTE: make HOSTCC=gcc  HOSTCPP=gcc  -E -C .../project/build/tmp/work-shared/plnx_arm/kernel-source O=.../project/build/tmp/work/plnx_arm-xilinx-linux-gnueabi/linux-xlnx/4.9-xilinx-v2017.4+gitAUTOINC+b450e900fd-r0/linux-plnx_arm-standard-build oldnoconfig
NOTE: make HOSTCC=gcc  HOSTCPP=gcc  -E -C .../project/build/tmp/work-shared/plnx_arm/kernel-source O=.../project/build/tmp/work/plnx_arm-xilinx-linux-gnueabi/linux-xlnx/4.9-xilinx-v2017.4+gitAUTOINC+b450e900fd-r0/linux-plnx_arm-standard-build oldconfig
ERROR: oe_runmake failed
make: Entering directory '.../project/build/tmp/work-shared/plnx_arm/kernel-source'
make[1]: Entering directory '.../project/build/tmp/work/plnx_arm-xilinx-linux-gnueabi/linux-xlnx/4.9-xilinx-v2017.4+gitAUTOINC+b450e900fd-r0/linux-plnx_arm-standard-build'
.../project/build/tmp/work-shared/plnx_arm/kernel-source/scripts/mkmakefile: line 5: $'\r': command not found
.../project/build/tmp/work-shared/plnx_arm/kernel-source/scripts/mkmakefile: line 11: $'\r': command not found
.../project/build/tmp/work-shared/plnx_arm/kernel-source/scripts/mkmakefile: line 12: $'\r': command not found
.../project/build/tmp/work-shared/plnx_arm/kernel-source/scripts/mkmakefile: line 52: warning: here-document at line 24 delimited by end-of-file (wanted `EOF')
.../project/build/tmp/work-shared/plnx_arm/kernel-source/scripts/mkmakefile: line 53: syntax error: unexpected end of file
make[1]: *** [.../project/build/tmp/work-shared/plnx_arm/kernel-source/Makefile:461: outputmakefile] Error 2
make[1]: Leaving directory '.../project/build/tmp/work/plnx_arm-xilinx-linux-gnueabi/linux-xlnx/4.9-xilinx-v2017.4+gitAUTOINC+b450e900fd-r0/linux-plnx_arm-standard-build'
make: *** [Makefile:150: sub-make] Error 2

EOF53행은 개행 문자가 없는 단일 토큰입니다 ( cat << EOF > Makefilefrom

생성된 스크립트의 마지막 줄은 EOF^M예상한 것과 일치하지 않는다는 것 같습니다 EOF( \r/ 없음 ^M).

답변1

아니요, bash에 문자를 무시하도록 지시하는 방법/옵션이 없습니다 \r(즉, \r\n동등한 \n).

파일은 파일 끝 중 하나로 파일 시스템에 저장할 수 있으며 bash는 이에 문제가 없습니다.

답변2

문제의 원인은 빌드 프로세스 내에서 git을 사용했기 때문에 발생한 것 같습니다. Linux에서는 autocrlf다음과 같이 설정되어 있는지 확인하세요 input.

git config --global core.autocrlf input

그 후에는 빌드가 잘 작동합니다.

관련 정보