Я использую 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
в скрипте или иным образом изменить его перед запуском.