\curl -L https://get.rvm.io | bash -s stable
Mengapa perintah dimulai \
?
Ini adalah situs tempat saya melihatnya.
\curl -L https://get.rvm.io | bash -s stable
Mengapa perintah dimulai \
?
Ini adalah situs tempat saya melihatnya.
alias curl='curl --some --default --options'
Jika Anda memiliki alias untuk curl
dan Anda tidak ingin menggunakannya, meletakkan backslash di depan menonaktifkan alias dan menjalankan biner ikal secara langsung.
Perhatikan bahwa ini hanya berlaku pada shell interaktif. Alias tidak berlaku dalam skrip sehingga tidak perlu ada di sana.
shopt -s expand_aliases
sebelum menggunakan alias\curl
tidak melewati fungsi shell yang dinamaicurl
. Untuk itu, Anda dapat menggunakan perintah built-in bashcommand
:command curl ...
\curl ...
adalahcommand curl ...
dash
(dan mungkin kerang lainnya, meskipun Anda benar untukbash
tanpaexpand_aliases
) tidak memperluas alias dalam skrip.Spesifikasi shell (Bourne / POSIX) mengatakan bahwa substitusi alias dalam shell interaktif ditekan ketika ada karakter kata perintah yang dikutip. Sebuah backslash adalah salah satu cara untuk melakukan itu, tetapi ada juga cara lain yang terkenal untuk mengutip: kutipan tunggal dan ganda. Semua hal berikut akan menekan penggantian alias:
Menggunakan
\curl
hanyalah cara yang paling umum dan mudah dibaca. Karena ini adalah fitur standar, Anda dapat mengharapkannya berfungsi di semua cangkang Bourne-heritage.\curl
terlihat agak seperti perintah TeX, bukan? :-)sumber
\curl
memotong alias dengan nama yang sama; perhatikan bahwa hanya alias yang dilewati dengan cara ini, bukan fungsi shell ;command curl ...
akan memastikan melewati baik .command() { echo "Not command, lol!"; } ; command -V echo ; \command -V echo ; \command command echo "This is command! (masking despair)"
mencetakNot command, lol!
x 3.command
sendiri dengan fungsi shell, Anda mengalahkan mekanisme. Apa yang ditunjukkan oleh contoh Anda adalah yang\
tidak mem-bypass fungsi , seperti yang dinyatakan. Sebuah contoh non-diri sendiri:date() { echo 'not date'; }; date; command date
. Jika Anda khawatir tentang berbahaya gangguan dengancommand
, melihat stackoverflow.com/a/35931876/45375command
untuk tidak ditimpa. Dari tautan Anda sendiri: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)