cp: opção inválida -- 'h'

cp: opção inválida -- 'h'

Estou usando o Ubuntu e estou tentando instalaressePacote Python via Anaconda. Segui os passos conforme estão no link, e quando digito cp -Ri $THIS_DIR/PackageFiles/Scripts $CMDIR(linha 59 em diante), obtenho:

cp: invalid option -- 'h'

Qual é o motivo e como posso corrigi-lo?

EDIT: As saídas de echo $THIS_DIRe echo $CMDIRsão dirname -bashe /home/myusername/cellmodeller, respectivamente.

Responder1

Algumas coisas: if THIS_DIRcontains dirname -bash, cp -Ri $THIS_DIR/...expande para o equivalente a cp -Ri dirname -bash/...(devido à divisão de palavras), ou seja, cpobtém dirnamee -bash/...como argumentos distintos. Esse segundo começa com um travessão, então tenta interpretar as letras como opções. GNU cp não tem -hcomo opção, então dá um erro.

Você poderia evitar a divisão com aspas, mas isso não significa muito, pois provavelmente você não tem um diretório chamado dirname -bashcom espaço e tudo.

Olhando para o script, THIS_DIRé definido via

THIS_DIR="`dirname $0`"

observe os crases, eles iniciam uma substituição de comando, executando o dirnamecomando. Se você removê-los, uma sequência literal dirname ...será atribuída.

Então, novamente, $0é o nome do shell ou script em execução. O script provavelmente usa esse comando para descobrir onde o script reside, por exemplo, o caminho /foo/barse você executou o arquivo /foo/bar/scriptname.sh. Mas em um shell interativo iniciado normalmente $0provavelmente contém apenas bash, ou -bashse for um shell de login.

Como cutrightjm disse nos comentários, esse script deve ser executado como um script, não como comandos copiados individualmente para o terminal. (Ainda poderia usar aspas em torno das expansões.)

É claro que você pode alterar a atribuição THIS_DIRno script ou modificá-la antes de executar.

informação relacionada