[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` 查看版本
![](https://box.kancloud.cn/2441d7ef314f655f18a11cb2aa5fc0af_401x89.png)
查看命令的结果,其中 "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)