[TOC]
# winget
目前還不完善,需要申請,然后用 MicroSoft登陸賬戶,從應用商店安裝!
# Scoop(推薦)
[Scoop](https://github.com/lukesampson/scoop) is a command-line installer for Windows inspired by Homebrew.
<i style="color:red">Xee:</i>**Scoop可以用來[安裝yarn](https://yarnpkg.com/zh-Hans/docs/install)就避免了再次安裝node的尷尬...**
[Scoop](http://scoop.sh/) 是 windows 上個一個包管理工具,安裝命令行命令比較實用,通過scoop能快速在機器上安裝所需要的標準工具、自定義工具。
## 安裝
必須使用 powershell 3.0 以上,在命令行窗口中輸入命令 `$PSVersionTable.PSVersion` 查看版本

查看命令的結果,其中 "Major" 既是當前已安裝 PowerShell 的版本號
如果是 3.0 以下,需要升級才可以使用。
```
如何升級?
需要先將如下環境安裝好后重啟計算機:
1. 先安裝好 Microsoft .NET Framework 4.5 http://www.microsoft.com/zh-CN/download/details.aspx?id=30653
2. 再安裝 Windows Management Framework 4.0:https://www.microsoft.com/zh-CN/download/details.aspx?id=40855(64 位 win7系統安裝 Windows6.1-KB2819745-x64-MultiPkg.msu,32位 win7 系統安裝 Windows6.1-KB2819745-x86-MultiPkg.msu)
第一步,打開powershell3.0+,輸入以下代碼,選擇A【全是】
set-executionpolicy remotesigned -s cu
上面成功之后,進入第二步
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
這時候 scoop 就已經在當前計算機上安裝好了。
```
## 先自定義安裝目錄
這種方式都可以避免將軟件裝到 系統盤!防止以后越來越臃腫的系統 提示 “系統盤空間不足!”
1. 將Scoop安裝到自定義目錄(命令行方式)
```
$env:SCOOP='D:\Scoop'
[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')
```
**小坑**:如果你在命令行下載scoop(Initializing...Downloading...)的過程中強行終止了。 那么會無法正常使用,而且也無法重復下載,解決辦法是找到 scoop 的下載目錄(筆者的目錄是:C:\Users\用戶名\scoop),刪除然后重新執行以上命令重新下載即可。
2. 將 Scoop 配置為將全局程序安裝到自定義目錄 `SCOOP_GLOBAL`(命令行方式)
```
$env:SCOOP_GLOBAL='D:\ScoopApps'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine')
```
# 添加軟件源
scoop 默認的軟件有點少。
```
scoop bucket add extras
scoop bucket scoop-fruit https://hub.fastgit.org/chandlerver5/scoop-fruit
```
后續按情況再添加其它源!
# 安裝`aria2`加速下載
Scoop 可以利用 aria2 來使用多連接下載。通過Scoop 安裝后,可用于以后的所有下載,命令如下:
~~~shell
scoop install aria2
~~~
aria2 相關配置:
~~~
aria2-enabled (默認值: true)
aria2-retry-wait (默認值: 2)
aria2-split (默認值: 5)
aria2-max-connection-per-server (默認值: 5)
aria2-min-split-size (默認值: 5M)
~~~
# 安裝 openssh
```
scoop install -g main/openssh
```
# 安裝 yarn
```
scoop install -g yarn
```
我們發現,下載的過程中自動下載了依賴 7zip。這說明scoop會幫助我們管理程序之間的依賴。不僅如此,下載之后的內容會自動將加入到(Path)環境變量中。十分方便!
下載完成之后的資源會放在類似 `C:\Users\你的用戶名\scoop\apps` 的位置。
# Notepad3
```
scoop install notepad3 -g
```
注冊右鍵:
```
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\Open With Notepad]
@="Open with Notepad"
"Icon"="D:\\dev\\apps\\notepad3\\current\\Notepad3.exe"
[HKEY_CLASSES_ROOT\*\shell\Open With Notepad\command]
@="\"D:\\dev\\apps\\notepad3\\current\\Notepad3.exe\" \"%1\""
```
取消右鍵:
```
Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT\*\shell\Open With Notepad]
```
# 常見問題
## 文件名、目錄名或卷標語法不正確。
[Redirect "global" yarn directory#2969](https://github.com/lukesampson/scoop/pull/2969)
~~~
tsc
文件名、目錄名或卷標語法不正確。
yarn global bin
yarn global dir
~~~
使用 `scoop which nrm` 查看該命令所在位置!
刪除該位置:即可!
```
D:\Applications\Scoop\apps\yarn\current\Yarn\bin
```
# bash和sh區別
junru 同學作了解釋:
1. `sh`一般設成`bash`的軟鏈
~~~
[work@zjm-testing-app46 cy]$ ll /bin/sh
lrwxrwxrwx 1 root root 4 Nov 13 2006 /bin/sh -> bash
~~~
2. 在一般的 linux 系統當中(如 redhat),使用 sh 調用執行腳本相當于打開了 bash 的 POSIX 標準模式
3. 也就是說 `/bin/sh` 相當于`/bin/bash --posix`
所以,`sh`跟`bash`的區別,實際上就是`bash`有沒有開啟 posix 模式的區別
可以預想的是,如果第一行寫成`#!/bin/bash --posix`,那么腳本執行效果跟`#!/bin/sh`是一樣的(遵循 posix 的特定規范,有可能就包括這樣的規范:"當某行代碼出錯時,不繼續往下解釋")
# 參考
http://blog.csdn.net/anlegor/article/details/46681885
[Scoop安裝遇到 “raw.githubusercontent.com未能解析” 解決方案](https://blog.csdn.net/qq_41061352/article/details/107140887)