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當然,您可以在腳本中更改分配,或在運行之前對其進行修改。

相關內容