60712


composerをインストールする例として以下のようなものを拝見しました。  
パイプ後ろにある php -- の最初の'--'の部分の意味がわかりません。  
お分かりの方ぜひご回答ください。よろしくお願いします。  
ネットである程度調べましたが、納得できず質問している状態です。

[code]

    curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
    
[/code]


CC BY-SA 4.0
2019-11-21T00:53:06.297
60711
2019-11-21T01:35:53.977
34792
question
php bash composer
ダブルダッシュについて


<https://www.php.net/manual/ja/features.commandline.options.php> によると

> Arguments passed to script.  
>  Use -- args when first argument starts with - or script is read from stdin

とあります。読めば納得なはずですが、どう納得できないでしょうか？

例示例では `php` スクリプトが `php` の標準入力から与えられています（ `curl`
の標準出力からパイプで受け取っています）つまりまさにマニュアルにある状況です。このとき  
\- コマンドラインで起動する `php` 実行ファイル自体へのオプションでなく  
\- `php` を使って実行するスクリプトへのオプションとして

`--install-dir=/usr/bin` と `--filename=composer` を渡すには `php`
実行ファイルに対して「以後を自分のコマンドラインオプションとして読むな」という意味で `--` を先行させます。

このダブルダッシュ `--` は他のツールでも「以後を自分のコマンドラインオプションとして読むな」の意味で良く使われます。リンク先おまけ２  
[1文字ハイフンが特別な意味を持つシェルコマンドの例を教えて下さい](https://ja.stackoverflow.com/questions/32124/)

シェルスクリプトを書く際に使うツールが `--` に対応していると「ここでファイル名が `-a`
とかありうるよな・・」って場合に考えることが減ってとても楽できます。常に `rm -f -- *` とか書いておけば良いわけで。


CC BY-SA 4.0
2019-11-21T01:19:43.317
60712
2019-11-21T01:35:53.977
2019-11-21T01:35:53.977
8589
8589
60711
answer