89165


以下の通り `curl` コマンドを実行したのですが、パイプの後の `bash -` は何をするためのものでしょうか？

[code]

    curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
    
[/code]

**実行環境:**  
CentOS 7  
bash


CC BY-SA 4.0
2022-05-30T12:32:57.383
89141
2022-05-31T13:11:36.183
2022-05-30T16:06:33.407
3060
49031
question
linux bash
bashにハイフン1つのコマンド「bash -」の意味を教えてください


この場合の `-` は標準入力を表していて、パイプの前で実行している curl コマンドの実行結果 (=シェルスクリプト)
を受け取って、そのまま実行しています。

`-` や `|` を使わない場合、いったん一時ファイルとして保存した後に bash
スクリプトを実行する必要があるので、コマンドを2行に分けなければいけません。  
簡略化したい場合に質問のような書き方をします。


CC BY-SA 4.0
2022-05-30T13:17:07.753
89142
2022-05-30T16:08:20.877
2022-05-30T16:08:20.877
3060
3060
89141
answer


この場合、`-` は何もしません。無意味な引数です。

BashなどのBourne系シェルにおいて `-` は `--` と同じです。以降の引数が `-`
で始まっていてもオプション（フラグ）として扱わないことを示します。

質問のコマンドの場合、以降に引数がありませんから、引数が無いのと同じです。（引数が無い場合、bash は標準入力からコマンド列を読み込み、それを実行します）

参考:

> `--` はオプションの終わりを示し、それ以降のオプション処理を行いません。 `--` 以降の引き数は全て、ファイル名や引き数として扱われます。 引き数
> `-` は `--` と同じです。  
>  —— [Man page of
> BASH](https://linuxjm.osdn.jp/html/GNU_bash/man1/bash.1.html)

> A single <hyphen-minus> shall be treated as the first operand and then
> ignored.  
>  —— [POSIX
> sh](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html)

関連:
[1文字ハイフンが特別な意味を持つシェルコマンドの例を教えて下さい](https://ja.stackoverflow.com/q/32124/3054)


CC BY-SA 4.0
2022-05-31T12:32:01.130
89165
2022-05-31T13:11:36.183
2022-05-31T13:11:36.183
3054
3054
89141
answer