将一个程序加入到环境 Path 中,通常做法是将程序文件所在目录附加到系统或者用户的 Path 变量中,这样我们在任何路径下的命令行中,都可以调用该程序工作。大部分应用程序安装过程中的做法也是如此。

但是这样会将目录中的所有文件暴露到 Path 中,其中大部分是我们不需要用到的。这样做也增加了潜在 DLL Hell 隐患,比如同名不同版本 DLL 暴露到 Path 中低版本覆盖了高版本导致程序运行时异常。

最好的做法是,只将我们需要用到的 exe 文件加入到 Path 中,Windows 上也的确有这样的解决方法。

以 vim 为例。我们新建一个 vim.bat 文件,编辑文件加入以下代码:

1
@"C:\Program Files (x86)\Vim\vim74\gvim.exe" %*

将该文件保存到一个目录中,然后再将该目录加入到用户或系统 Path 变量中。这样,这个 vim.bat 就暴露到 Path 中,可以在命令行中随时调用了,调用名为 vim,即 .bat 文件的文件名。

@ 表示禁止调用的回显,"" 引号包含目标程序的完整路径(这样路径中允许有空白符),%* 表示将传递给 .bat 文件的参数原封不动的传递给目标程序。

我们可以在此目录下新建其他 bat 文件,来向 Path 中加入各种所需的程序(同时也可以自定义名称)。

PS: 其实如果打开 Ruby 的安装目录,我们就会发现,irb 和 gem 都使用了这种方法。