\curl -L https://get.rvm.io | bash -s stable
Perché il comando inizia con \
?
Questo è il sito in cui l'ho visto.
\curl -L https://get.rvm.io | bash -s stable
Perché il comando inizia con \
?
Questo è il sito in cui l'ho visto.
Risposte:
alias curl='curl --some --default --options'
Se hai un alias per curl
e non vuoi usarlo, mettere una barra rovesciata in primo piano disabilita l'alias ed esegue direttamente il binario del ricciolo.
Si noti che questo vale solo per una shell interattiva. Gli alias non hanno effetto negli script, quindi non sarebbe necessario lì.
\curl
non ignora alcuna funzione di shell denominata curl
. Per questo, è possibile utilizzare il comando incorporato bash command
:command curl ...
\curl ...
ècommand curl ...
dash
(e possibilmente altre shell, anche se siete sulla strada giusta per bash
senza expand_aliases
) non espandere gli alias negli script.
La specifica della shell (Bourne / POSIX) afferma che la sostituzione dell'alias in una shell interattiva viene soppressa quando viene citato qualsiasi carattere della parola di comando. Una barra rovesciata è un modo per farlo, ma ci sono anche altri modi ben noti per citare: virgolette singole e doppie. Tutto ciò che segue sopprimerà la sostituzione alias:
\curl
cur\l
\c\u\r\l
"c"url
"curl"
"c""u""r""l"
'curl'
'cu'"rl"
L'uso \curl
è solo il modo più comune e leggibile. Poiché si tratta di una funzionalità standardizzata, ci si può aspettare che funzioni in tutte le shell Bourne-heritage.
\curl
sembra un po 'come un comando TeX, vero? :-)
\curl
indicare il motivo specifico per cui ignora un alias con lo stesso nome; si noti che solo gli alias vengono ignorati in questo modo, non le funzioni della shell ; command curl ...
garantirebbe bypassando sia .
command() { echo "Not command, lol!"; } ; command -V echo ; \command -V echo ; \command command echo "This is command! (masking despair)"
stampe Not command, lol!
x 3.
command
se stesso con una funzione di shell, si sta sconfiggendo il meccanismo. Ciò che mostra il tuo esempio è che \
non ignora le funzioni , come indicato. Un non-autolesionista esempio date() { echo 'not date'; }; date; command date
. Se siete preoccupati per maligni manomissioni con command
, vedi stackoverflow.com/a/35931876/45375
command
per non essere ignorato. Dal tuo link: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)
shopt -s expand_aliases
prima dell'uso dell'alias