cp: ungültige Option – „h“

cp: ungültige Option – „h“

Ich verwende Ubuntu und versuche zu installierenDasPython-Paket über Anaconda. Ich habe die Schritte wie im Link beschrieben befolgt und wenn ich cp -Ri $THIS_DIR/PackageFiles/Scripts $CMDIR(ab Zeile 59) tippe, erhalte ich:

cp: invalid option -- 'h'

Was ist der Grund und wie kann ich das Problem beheben?

BEARBEITEN: Die Ausgaben von echo $THIS_DIRund echo $CMDIRsind jeweils dirname -bashund /home/myusername/cellmodeller.

Antwort1

Ein paar Dinge: Wenn THIS_DIRenthält dirname -bash, cp -Ri $THIS_DIR/...wird es zum Äquivalent von erweitert cp -Ri dirname -bash/...(aufgrund der Worttrennung), d. h., es cperhält dirnameund -bash/...als unterschiedliche Argumente. Das zweite beginnt mit einem Bindestrich, daher versucht es, die Buchstaben darin als Optionen zu interpretieren. GNU cp hat dies nicht -hals Option, daher gibt es einen Fehler aus.

Sie könnten die Aufteilung mit Anführungszeichen verhindern, aber das bedeutet nicht viel, da Sie wahrscheinlich kein Verzeichnis dirname -bashmit dem entsprechenden Leerzeichen usw. haben.

Betrachtet man das Skript, THIS_DIRwird eingestellt über

THIS_DIR="`dirname $0`"

Beachten Sie die Backticks. Sie starten eine Befehlsersetzung und führen den dirnameBefehl aus. Wenn Sie sie entfernen, wird eine Literalzeichenfolge dirname ...zugewiesen.

Dann wiederum $0ist es der Name der laufenden Shell oder des laufenden Skripts. Das Skript verwendet diesen Befehl wahrscheinlich, um herauszufinden, wo sich das Skript selbst befindet, z. B. den Pfad, /foo/barwenn Sie ausgeführt haben /foo/bar/scriptname.sh. Aber in einer normalerweise gestarteten interaktiven Shell $0enthält es wahrscheinlich nur bash, oder -bashes handelt sich um eine Login-Shell.

Wie cutrightjm in den Kommentaren sagte, soll dieses Skript als Skript ausgeführt werden und nicht als Befehle, die einzeln in das Terminal kopiert werden. (Die Erweiterungen könnten trotzdem in Anführungszeichen gesetzt werden.)

Natürlich können Sie die Zuweisung THIS_DIRim Skript ändern oder es vor der Ausführung anderweitig modifizieren.

verwandte Informationen