cp: 无效选项 -- 'h'

cp: 无效选项 -- 'h'

我正在使用 Ubuntu 并且正在尝试安装通过 Anaconda 的 Python 包。我按照链接中的步骤进行操作,当我输入cp -Ri $THIS_DIR/PackageFiles/Scripts $CMDIR(第 59 行以后)时,我得到:

cp: invalid option -- 'h'

原因是什么?我该如何纠正?

echo $THIS_DIR编辑:和的输出分别echo $CMDIRdirname -bash/home/myusername/cellmodeller

答案1

有几件事: if THIS_DIRcontains 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当然,您可以在脚本中更改分配,或者在运行之前对其进行修改。

相关内容