現在是懶人的天下,為了迎合用戶的需求,很多開源軟體或者包提供的安裝步驟都非常簡單,大家應該看到不少類似一鍵安裝的命令,下面是幾個典型的例子:
homebrew 安裝
$ ruby -e “$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)”
nvm 安裝, 兩種方法
$ curl https://raw.githubusercontent.com/creationix/nvm/v0.8.0/install.sh | sh
$ wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.8.0/install.sh | sh
rvm 安裝
$ \curl -sSL https://get.rvm.io | bash -s stable
wget -qO- https://get.rvm.io | bash -s – arg1 arg2 # – 表示 引數不做任何處理,bash -s 傳參時, KaTeX parse error: Expected 'EOF', got '#' at position 1: #?、@獲取不到正確的值,
wget -qO- https://get.rvm.io | bash -x -s – arg1 arg2 # -x 可以列印執行的情況,可以用于除錯
簡單粗暴,CMD + C 再加 CMD + V,隨手一個 Enter,就搞定了,
那么這上面的原理是什么樣子的呢?其實很簡單,
首先通過 curl 或者 wget 將安裝腳本下載下來,將內容輸出到標準輸出,這一步對應上面的 curl -ssL 或者 wget -qO-,一定要注意將錯誤或者例外輸出過濾掉,保證標準輸出的內容就是腳本的內容,
然后通過管道傳遞給 shell,shell 在沒有指定腳本檔案的時候,支持從標準輸入讀取腳本內容并解釋執行,這樣將"下載 - 保存 - 安裝"這幾步操作合到一個命令中完成,
對于 rvm 的安裝又有點特殊,安裝腳本需要指定執行引數,bash -s stable 中 -s 之后的部分就是透傳給安裝腳本的引數,翻譯下可以理解的形式是:
$ \curl -sSL https://get.rvm.io > /tmp/rvm_install.sh
$ bash /tmp/rvm_install.sh stable
$ rm -f /tmp/rvm_install.sh
PS: \curl 的用法,我在 終端下肉眼看不見的東西 曾經提到過,
不過,建議執行類似一鍵安裝的命令之前,一定要先大致看下安裝腳本,避免里面有不安全的代碼,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/266399.html
標籤:其他
上一篇:axios 原始碼精讀
