我正在使用 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
有几件事: if THIS_DIR
contains 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
是正在运行的 shell 或脚本的名称。该脚本可能使用该命令来查找脚本本身所在的位置,例如/foo/bar
运行时的路径/foo/bar/scriptname.sh
。但在通常启动的交互式 shell 中$0
可能只包含bash
, 或者-bash
如果它是登录 shell。
正如 cutrightjm 在评论中所说,该脚本旨在作为脚本运行,而不是作为单独复制到终端的命令。 (它仍然可以在扩展周围使用引号。)
THIS_DIR
当然,您可以在脚本中更改分配,或者在运行之前对其进行修改。