\curl -L https://get.rvm.io | bash -s stable
Почему команда начинается с \
?
Это сайт, где я это видел.
\curl -L https://get.rvm.io | bash -s stable
Почему команда начинается с \
?
Это сайт, где я это видел.
Ответы:
alias curl='curl --some --default --options'
Если у вас есть псевдоним для, curl
и вы не хотите его использовать, то указание обратной косой черты приводит к отключению псевдонима и непосредственному запуску двоичного файла curl.
Обратите внимание, что это применимо только к интерактивной оболочке. Псевдонимы не действуют в сценариях, поэтому в этом нет необходимости.
\curl
не обходится никакая именованная функция оболочки curl
. Для этого вы можете использовать встроенную команду bash command
:command curl ...
\curl ...
являетсяcommand curl ...
dash
(и, возможно, другие оболочки, хотя вы правы для bash
без expand_aliases
) действительно расширяет псевдонимы в сценариях.
Спецификация оболочки (Bourne / POSIX) гласит, что подстановка псевдонимов в интерактивной оболочке подавляется, когда любой символ командного слова указан в кавычках. Обратная косая черта - это один из способов сделать это, но есть и другие хорошо известные способы цитирования: одинарные и двойные кавычки. Все нижеизложенное будет подавлять замену псевдонимов:
\curl
cur\l
\c\u\r\l
"c"url
"curl"
"c""u""r""l"
'curl'
'cu'"rl"
Использование \curl
- это самый распространенный и читаемый способ. Поскольку это стандартная функция, можно ожидать, что она будет работать во всех оболочках наследия Борна.
\curl
выглядит немного как команда TeX, не так ли? :-)
\curl
обходит псевдонимы с тем же именем; обратите внимание, что таким образом обходятся только псевдонимы , а не функции оболочки ; command curl ...
будет гарантировать обход либо .
command() { echo "Not command, lol!"; } ; command -V echo ; \command -V echo ; \command command echo "This is command! (masking despair)"
печатает Not command, lol!
х 3.
command
себя функцией оболочки, вы победите механизм. То, что показывает ваш пример, это то, \
что не обходит функции , как указано. Не-пагубным пример: date() { echo 'not date'; }; date; command date
. Если вы беспокоитесь о вредоносных фальсификации с command
, см stackoverflow.com/a/35931876/45375
command
не быть отвергнутым. По вашей собственной ссылке: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
перед использованием псевдонима