一直以来使用的是 windows 系统自带的命令行工具。后来接触了一些 linux 的命令,windows terminal 对此并不能很好的兼容。网上搜了一下很多人推荐使用 Babun,做为萌新的我也尝试了一下。
下载安装
Babun 是 Github 上的开源项目,前往项目主页 babun.github.io 点击 Download, 下载安装包。居然有200M+之大,也是费解啊,印象中一个命令行工具了不起应该也就几兆吧?
下载完毕之后,解压到任意目录,然后运行安装脚本 install.bat
。 等待安装完毕之后,会自动打开一个 Babun 命令行窗口。
功能初探
Babun 已经帮我们在右键菜单里添加了在当前目录打开 Babun 命令行窗口的功能 Open babun here
。可以输入常用的 linux 命令以及 Babun 自身的包管理工具 pact
, 甚至 python, perl, git, svn 等等工具都已经预装了。
在Jetbrains IDE中使用 Babun
Jetbrains IDE(我使用的是 Webstorm, Jetbrains 的其他产品应该也是一样的)有一个很好用的功能——内置 Terminal。默认的情况下该功能会开启系统默认的终端。那么是否可以修改成默认开启 Babun 呢?
所幸 IDE 提供了这个配置:File -> Settings
打开配置窗口,选中 Tools -> Terminal
。这里输入 Babun Terminal 的可以执行文件路径。如果是默认安装的情况下,路径应该是 C:\Users\{USERNAME}\.babun\cygwin\bin\bash.exe
。
保存配置之后通过 IDE 打开 Terminal
输入 ls -l
, 果然打印出了目录列表。大功告成!
…..等等,好像还是不对!虽然现在开启了 Babun, 但是当前的工作目录不对,处于 C:\Users\{USERNAME}\
之下,没有能自动切换到当前的项目目录。要知道使用这个内置 Terminal 的目的就是为了快速打开当前项目目录下的命令行啊!
解决办法:打开 C:\Users\{USERNAME}\.babun\cygwin\etc\bash.bashrc
, 在文件末尾添加一行 cd $OLDPWD
,保存文件并重新开启 Terminal,这时才大功告成!
使用 git
和往常一样,在 Babun 里键入 git clone git@github.com:some-project.git
, 从 github 上 clone 某项目。之前已经在本机安装过 git 并配置好 ssh, 并且正常使用;但是现在却提示 permission denied,操作失败。
经查,原来是 Babun 自带了另外一个 git,这个 git 在没有配置 ssh 的情况下,自然是无法通过 ssh 验证了!解决办法有二:
- 在 Babun 内运行 ssh-keygen 重新生成公私钥,然后在 github 上添加该公钥;
-
复制之前的位于
C:\Users\{USERNAME}\
的配置文件夹.ssh
到 Babun 用户配置路径C:\Users\{USERNAME}\.babun\cygwin\home\{USERNAME}\
之下,并给予相关文件读写权限,例如:$chmod 600 config $chmod 600 id_rsa
使用 gem/jekyll
做完了上面那些,以为自己终于可以轻松下来,直接使用了。打开自己的 jekyll 项目,准备把以上内容好好梳理一下,记录下来。当我键入 jekyll serve
时,又出了新的问题!
大概是因为 Babun 默认路径与系统用户路径不一致的关系,之前通过 ruby 安装的 gem/jekyll 的路径识别均出现错误! 显示 No such file or directory -- /cygdrive/d/Program/Ruby/Ruby22-x64/bin/gem (LoadError)
。
可以看到其实 /cygdrive/
后面指向的路径其实是对的,只不过应该是绝对路径。好在这个也是可以通过配置文件来解决。打开 C:\Users\{USERNAME}\.babun\cygwin\etc\bash.bashrc
, 在文件末尾添加
```
alias gem=gem.bat
alias jekyll=jekyll.bat
```
相当于每次打开 Babun 都设置了这两个命令的执行文件配置,故而得以解决问题。好在我这里也只用到了这两个 ruby 包,如果有别的,也得相应的自己添加上去。
使用 egret
egret 是之前用 EgretEngine 安装的,结果也无法识别全局命令了。查看了下 node 全局安装的包路径 C:\Users\{USERNAME}\AppData\Roaming\npm
,有 egret 留下的 egret.cmd, 于是参考上面 ruby 包的方式,
同样在 C:\Users\{USERNAME}\.babun\cygwin\etc\bash.bashrc
在文件末尾添加相关的 alias 即可:
```
alias egret=egret.cmd
```
总结
活着就是折腾,只是为了换个稍微舒心一点点的命令行,出现一堆问题…… 难怪大家都说做开发,windows 不如 mac!