cp: недопустимая опция — 'h'

cp: недопустимая опция — 'h'

Я использую Ubuntu и пытаюсь установитьэтотПакет Python через Anaconda. Я следовал шагам, указанным в ссылке, и когда я печатаю cp -Ri $THIS_DIR/PackageFiles/Scripts $CMDIR(строка 59 и далее), я получаю:

cp: invalid option -- 'h'

В чем причина и как ее исправить?

EDIT: Выходные данные echo $THIS_DIRи echo $CMDIRравны dirname -bashи /home/myusername/cellmodeller, соответственно.

решение1

Пара вещей: если THIS_DIRсодержит dirname -bash, cp -Ri $THIS_DIR/...расширяется до эквивалента cp -Ri dirname -bash/...(из-за разбиения слов), то есть cpполучает dirnameи -bash/...как отдельные аргументы. Второй начинается с тире, поэтому он пытается интерпретировать буквы в нем как опции. GNU cp не имеет -hопции, поэтому он выдает ошибку.

Вы можете предотвратить разделение с помощью кавычек, но это не имеет большого значения, поскольку у вас, вероятно, нет каталога, называемого dirname -bashс пробелом и т. д.

Глядя на сценарий, THIS_DIRустанавливается через

THIS_DIR="`dirname $0`"

обратите внимание на обратные кавычки, они начинают подстановку команды, запуская команду. Если вы их уберете, будет назначена dirnameлитеральная строка .dirname ...

С другой стороны, $0это имя запущенной оболочки или скрипта. Скрипт, вероятно, использует эту команду, чтобы узнать, где находится сам скрипт, например, путь, /foo/barесли вы запустили /foo/bar/scriptname.sh. Но в интерактивной оболочке, запущенной обычно, $0вероятно, просто содержит bash, или -bashесли это оболочка входа.

Как сказал cutrightjm в комментариях, этот скрипт предназначен для запуска как скрипт, а не как команды, индивидуально копируемые в терминал. (Он все равно может использовать кавычки вокруг расширений.)

Конечно, вы можете изменить назначение THIS_DIRв скрипте или иным образом изменить его перед запуском.

Связанный контент