Bash berperilaku agak non-standar ketika datang ke -.
POSIX mengatakan:
Pedoman 10: Argumen
pertama --yang bukan opsi-argumen harus diterima sebagai pembatas yang menunjukkan akhir opsi. Argumen berikut harus diperlakukan sebagai operan, bahkan jika mereka mulai dengan- karakter.
[...]
Panduan 13:
Untuk utilitas yang menggunakan operan untuk mewakili file yang akan dibuka baik untuk membaca atau menulis, -operan harus digunakan untuk berarti hanya input standar (atau output standar ketika jelas dari konteksnya bahwa file output sedang ditentukan) atau nama file -.
Dan
Jika utilitas yang dijelaskan dalam volume Shell dan Utilitas dari POSIX.1-2017 sesuai dengan pedoman ini diperlukan untuk menerima, atau tidak menerima, operan -berarti input atau output standar, penggunaan ini dijelaskan di bagian OPERANDS. Kalau tidak, jika utilitas tersebut menggunakan operan untuk mewakili file, itu adalah implementasi yang ditentukan apakah operan -singkatan dari input standar (atau output standar), atau untuk file bernama -.
Tapi kemudian man 1 bashterbaca:
A --menandai akhir opsi dan menonaktifkan pemrosesan opsi lebih lanjut. Setiap argumen setelah --diperlakukan sebagai nama file dan argumen. Argumen -setara dengan --.
Jadi untuk Bash -berarti bukan input standar atau file, maka agak non-standar.
Sekarang kasus khusus Anda:
curl -sL https://rpm.nodesource.com/setup_6.x | sudo -E bash -
Saya menduga penulis perintah ini mungkin tidak menyadari -setara dengan --dalam hal ini. Saya curiga penulis ingin memastikan bashakan membaca dari input standarnya, mereka diharapkan -bekerja sesuai dengan pedoman 13.
Tetapi bahkan jika itu bekerja sesuai dengan pedoman, -akan tidak perlu di sini karena bashmendeteksi ketika input standarnya adalah pipa dan bertindak sesuai (kecuali -cdiberikan dll.).
Namun -tidak bekerja sesuai dengan pedoman, itu berfungsi seperti --. Masih --tidak perlu di sini karena tidak ada argumen setelahnya.
Menurut pendapat saya yang terakhir -tidak mengubah apa pun. Perintah itu akan bekerja tanpanya.
Untuk melihat bagaimana --dan -dapat bermanfaat secara umum, pelajari contoh di bawah ini.
catdi Kubuntu saya mematuhi kedua pedoman dan saya akan menggunakannya untuk menunjukkan kegunaan -dan-- .
Biarkan file bernama fooada. Ini akan mencetak file:
cat foo
Biarkan file bernama --helpada. Ini tidak akan mencetak file:
cat --help
Tetapi ini akan mencetak file bernama --help:
cat -- --help
Ini akan menyatukan file bernama --helpdengan apa pun yang berasal dari input standar:
cat -- --help -
Tampaknya Anda tidak benar-benar membutuhkannya --, karena Anda selalu dapat lulus ./--helpyang akan ditafsirkan sebagai file pasti. Tapi pertimbangkan
cat "$file"
ketika Anda tidak tahu sebelumnya apa isi variabel itu. Anda tidak bisa hanya bergantung ./padanya, karena itu mungkin jalan yang absolut dan ./akan merusaknya. Di sisi lain itu mungkin file bernama --help(karena mengapa tidak?). Dalam hal --ini sangat berguna; ini adalah perintah yang jauh lebih kuat:
cat -- "$file"