cp: 잘못된 옵션 -- 'h'

cp: 잘못된 옵션 -- 'h'

Ubuntu를 사용하고 있으며 설치하려고 합니다.이것Anaconda를 통한 Python 패키지. 나는 링크의 단계를 따랐고 cp -Ri $THIS_DIR/PackageFiles/Scripts $CMDIR(59번째 줄부터) 입력하면 다음과 같은 결과를 얻습니다.

cp: invalid option -- 'h'

이유는 무엇입니까? 이 문제를 어떻게 바로잡을 수 있나요?

echo $THIS_DIR편집: 및 의 출력은 각각 echo $CMDIR입니다 .dirname -bash/home/myusername/cellmodeller

답변1

몇 가지 사항: THIS_DIR포함하는 dirname -bash경우 (단어 분할로 인해) cp -Ri $THIS_DIR/...동등한 것으로 확장됩니다 . 즉, 및 다른 인수로 가져옵니다 . 두 번째는 대시로 시작하므로 그 안의 문자를 옵션으로 해석하려고 합니다. GNU cp는 옵션으로 사용할 수 없으므로 오류가 발생합니다.cp -Ri dirname -bash/...cpdirname-bash/...-h

dirname -bash따옴표로 분할하는 것을 방지할 수 있지만 공백과 모든 항목이 포함된 디렉토리 가 없기 때문에 이는 의미가 없습니다 .

THIS_DIR에 의해 설정된 스크립트를 봅니다.

THIS_DIR="`dirname $0`"

백틱에 주목하세요. 백틱은 명령 대체를 시작하고 dirname명령을 실행합니다. 제거되면 dirname ...리터럴 문자열이 할당됩니다.

다시 말하지만, $0실행 중인 셸이나 스크립트의 이름입니다. 스크립트는 이 명령을 사용하여 /foo/bar런타임 경로 와 같이 스크립트 자체가 있는 위치를 찾을 수 있습니다 /foo/bar/scriptname.sh. 그러나 일반적으로 실행되는 대화형 셸 또는 로그인 셸인 경우 $0에만 포함될 수 있습니다 .bash-bash

cutrightjm이 의견에서 말했듯이 이는 터미널에 복사된 별도의 명령이 아닌 스크립트로 실행되도록 고안되었습니다. (확장자 주위에 따옴표를 사용할 수 있습니다.)

THIS_DIR물론 스크립트 내에서 할당을 변경하거나 실행하기 전에 수정할 수 있습니다.

관련 정보