문제
ENV 파일 중 하나를 소싱 할 때 일부 문제가 발생합니다 (일련의 변수 내보내기)
예를 들어:
...
export MY_ROOT=/Soft/dev/blah/blah
export MY_BIN=${MY_ROOT}/bin
...
결과
$. my_env.sh
$echo $MY_BIN
/bint/dev/blah/blah
=> "/bin"은 변수의 시작을 접미사하는 대신 덮어 쓰는 것 같습니다.
아이디어가 있습니까?
그건 그렇고이 파일을 소스 할 때마다 오류 메시지 가보고됩니다.
": Command not found"
이상한 일입니다.이 메시지는 전체 내용을 주석하더라도 나타납니다.
처음에 호출 된 쉘은 좋아 보인다 #!/bin/sh
, 또는 #!/bin/bash
.
제어 캐릭터는 어떻습니까? Linux에서 스크리닝하는 방법?
해결책
파일의 줄 엔딩을 수정합니다.
dos2unix my_env.sh
어쨌든 현재 쉘에서 실행되기 때문에 공급되는 파일에 Shebang이 필요하지 않습니다. 그러나 의견으로는 인간 독자에게 유익 할 수 있습니다.
다른 팁
": 명령을 찾지 못한다"는 MS Wind 예를 들어 WebCV를 사용하여 체크 아웃하고 메모장 또는 WordPad를 사용하여 수정 한 다음 다시 제출했습니다.
([CTRL-M] 실행 파일을 찾을 수 없다고 불평하고 있습니다. 이는 UNIX/LINUX에 대한 매우 불편하고 다소 의심스러운 파일 이름이지만 완벽하게 유효합니다).
GNU를 통해 파일을 실행하십시오 cat -A
아니면 그 od -x
또는 hexdump
이것들을 보는 명령 (그리고 내 진단을 확인하거나 ... tr -d
시스템에 대한 적절한 인용문 및 쉘 "Verbatim"처리. (예를 들어 tr -d '[Ctrl-V],[Ctrl-M]'
일반적인 Linux 시스템의 Bash 아래).
버전에 따라 tr
사용할 수 있습니다. tr -d '\r'
또는 tr -d \015
(015는 CR의 Octal, "Carriage Return"또는 ^M --- MS-DOS를 라인 종료로 사용하는 데 사용되는 MS-DOS는 MS-DOS가 포기한 심연에서 썩을 수있는 많은 이유 중 하나입니다. 상호 운용성과 관련하여. 단일 문자의 라인 터미네이터는 다른 사람에게는 실제 문제를 일으키지 않지만 주류 컴퓨팅의 다른 모든 것이이 단일 문자를 사용했을 때 실제 변환 문제를 일으킨다).
오 예, vim
편리합니다 set ff
(일명 set fileformat
UNIX, MACOS 및 MS-DOS 라인 종료 규칙을 처리 할 수있는 옵션 vim
어떤 플랫폼에 있든 상관없이. 나는 기억하는 것 같다 vim
기본값은 파일이 사용중인 라인 종료 유형을 감지하고 변경되지 않은 상태로 두는 것입니다 (물론 새 파일에 대해 플랫폼의 기본으로 기본값).