tratando de mejorar mi magia bash. ayuda para descifrar este comando: bash -s stable

18

ok, así que estoy trabajando en un tutorial para instalar rvm en mi mac. el comando bash para obtener rvm a través de curl es

curl -L https://get.rvm.io | bash -s stable

Entiendo el comando curl de la primera mitad en la ubicación rvm.io, y que el resultado se canaliza al siguiente comando bash, pero no estoy seguro de qué está haciendo ese comando. Mis preguntas:

-s: siempre estoy confundido acerca de cómo referirme a estos. ¿Qué tipo de cosa es esta: un argumento de línea de comando? ¿Un interruptor? ¿algo más?

-s: que esta haciendo? He buscado en Google durante aproximadamente media hora, pero no estoy seguro de cómo referirlo hace que sea difícil.

estable: ¿qué es esto?

tl; dr: ayúdame a descifrar el comando bash -s stable

Para aquellos que responden a esta publicación, aspiro a algún día ser tan letrado como tú. hasta entonces, opstards como yo, ¡gracias por la ayuda!

tim
fuente

Respuestas:

22

La -scosa se llama una opción. En su caso, significa que bashse ejecutará con el primer conjunto de parámetros posicionales . Si quieres jugar con eso:

$ bash -s let us set some positional parameters just for fun
$ # doh? nothing seemed to happen
$ # In fact here we're in a new instance of bash with the parameters set. Look:
$ echo "$3"
set
$ echo "$5"
positional
$ # Get it?
$ printf "%s\n" "$@"
let
us
set
some
positional
parameters
just
for
fun
$ # Amazing!
$ # Let's get out of here!
$ exit
$ # (back to previous bash session)
$

En su caso, el script descargado a través de curl se envía a bash(por lo que se ejecutará) y tendrá el primer parámetro posicional establecido en stable.

Si alguna vez estás atrapado con opciones, no sabes lo que hacen: man bashy luego escribir /-sesto te llevará más o menos a donde -sse describe la opción. O si desea saber para qué -usirve la opción sed: man sedy luego escriba /-u.

¡Espero que esto ayude!

gniourf_gniourf
fuente
¿Qué es un "parámetro posicional"?
MikeSchinkel
2
@ MikeSchinkel: ver la referencia . Los parámetros posicionales son las variables denotadas por dígitos, por ejemplo, $1, $8. No puedes configurarlos directamente. Se configuran automáticamente cuando llama a un programa o una función. Por ejemplo, con una función: fun() { echo "Parameter 2 is $2"; }. Entonces intenta fun hello worldy fun "hello gniourf" "how are you?".
gniourf_gniourf
Bien gracias. Pero aún confundido; ¿Cómo es esto diferente de no usar la -sopción?
MikeSchinkel
1
@MikeSchinkel Sin la -sopción: bash stablebuscará el archivo stable e intentará ejecutarlo. Con la -sopción:: bash -s stableejecutará lo que viene en su stdin, con stableset as $1.
gniourf_gniourf