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
いくつかの点:THIS_DIR
含まれているdirname -bash
場合(単語分割のため)、同等に拡張cp -Ri $THIS_DIR/...
されます。つまり、および他の引数としてインポートされます。 2番目はダッシュで始まるので、その中の文字をオプションとして解釈しようとします。 GNU cpはオプションとして使用できないため、エラーが発生します。cp -Ri dirname -bash/...
cp
dirname
-bash/...
-h
dirname -bash
引用符で区切ることはできませんが、スペースとすべてのエントリを含むディレクトリがないため、これは意味がありません。
THIS_DIR
で設定されたスクリプトを表示します。
THIS_DIR="`dirname $0`"
バックティックに注目してください。バックティックはコマンド置換を開始し、dirname
コマンドを実行します。削除すると、dirname ...
リテラル文字列が割り当てられます。
繰り返しますが、$0
実行中のシェルまたはスクリプトの名前です。スクリプトはこのコマンドを使用して、/foo/bar
ランタイムパスなど、スクリプト自体が存在する場所を見つけることができます/foo/bar/scriptname.sh
。ただし、通常実行される対話型シェルまたはログインシェルの場合$0
にのみ含めることができます。bash
-bash
cutrightjmがコメントしたように、これは端末にコピーされた別のコマンドではなくスクリプトとして実行されるように設計されています。 (拡張子の周りに引用符を使用できます。)
THIS_DIR
もちろん、スクリプト内で割り当てを変更または実行する前に変更することもできます。