\curl -L https://get.rvm.io | bash -s stable
¿Por qué comienza el comando \
?
Este es el sitio donde lo vi.
\curl -L https://get.rvm.io | bash -s stable
¿Por qué comienza el comando \
?
Este es el sitio donde lo vi.
alias curl='curl --some --default --options'
Si tiene un alias para curl
y no desea usarlo, colocar una barra diagonal inversa al frente deshabilita el alias y ejecuta el binario curl directamente.
Tenga en cuenta que esto solo se aplica en un shell interactivo. Los alias no tienen efecto en los scripts, por lo que sería innecesario allí.
shopt -s expand_aliases
antes del uso del alias\curl
no omite ninguna función de shell llamadacurl
. Para eso, puede usar el comando incorporado bashcommand
:command curl ...
\curl ...
escommand curl ...
dash
(y posiblemente otros proyectiles, aunque estás en lo correcto parabash
sinexpand_aliases
) no ampliar alias en los scripts.La especificación de shell (Bourne / POSIX) dice que la sustitución de alias en un shell interactivo se suprime cuando se cita cualquier carácter de la palabra de comando. Una barra invertida es una forma de hacerlo, pero también hay otras formas conocidas de cotizar: comillas simples y dobles. Todo lo siguiente suprimirá la sustitución de alias:
Usar
\curl
es solo la forma más común y legible. Dado que esta es una característica estandarizada, puede esperar que funcione en todos los shells Bourne-heritage.\curl
se parece un poco a un comando TeX, ¿no? :-)fuente
\curl
omite un alias del mismo nombre; tenga en cuenta que solo se omiten los alias de esta manera, no las funciones de shell ;command curl ...
aseguraría eludir cualquiera de los dos .command() { echo "Not command, lol!"; } ; command -V echo ; \command -V echo ; \command command echo "This is command! (masking despair)"
impresionesNot command, lol!
x 3.command
en sí con una función de shell, que está venciendo el mecanismo. Lo que muestra su ejemplo es que\
no omite las funciones , como se indicó. A no autodestructiva ejemplo:date() { echo 'not date'; }; date; command date
. Si usted está preocupado acerca maliciosa manipulación concommand
, ver stackoverflow.com/a/35931876/45375command
para no ser anulado. Desde su propio enlace:Thus, with no control over the execution environment, you cannot write shell scripts that are fully immune to tampering, unless you know that your code will be executed by dash, ksh, or bash (with the workaround in place)